CA2018: count
복사할 Buffer.BlockCopy
바이트 수를 지정해야 하는 인수입니다.
속성 | 값 |
---|---|
규칙 ID | CA2018 |
제목 | Buffer.BlockCopy 에 대한 count 인수는 복사할 바이트 수를 지정해야 함 |
범주 | 신뢰성 |
수정 사항이 주요 변경인지 여부 | 주요 변경 아님 |
.NET 9에서 기본적으로 사용 | 경고로 |
원인
이 규칙은 요소의 크기가 1바이트보다 큰 배열에서 Buffer.BlockCopy
의 count
인수에 대해 Array.Length
가 사용된 경우에 트리거됩니다.
규칙 설명
Buffer.BlockCopy
를 사용하는 경우 count
인수는 복사할 바이트 수를 지정합니다. 요소 크기가 정확히 1바이트인 배열의 count
인수에 대해서만 Array.Length
를 사용해야 합니다. byte
, sbyte
, bool
배열에는 크기가 1바이트인 요소가 있습니다.
위반 문제를 해결하는 방법
count
인수에 대해 복사하려는 바이트 수를 지정합니다.
예시
위반:
using System;
class Program
{
static void Main()
{
int[] src = new int[] {1, 2, 3, 4};
int[] dst = new int[] {0, 0, 0, 0};
Buffer.BlockCopy(src, 0, dst, 0, src.Length);
}
}
Fix:
배열 요소의 크기가 1바이트보다 큰 경우 배열의 길이에 요소의 크기에 곱하여 바이트 수를 얻을 수 있습니다.
using System;
class Program
{
static void Main()
{
int[] src = new int[] {1, 2, 3, 4};
int[] dst = new int[] {0, 0, 0, 0};
Buffer.BlockCopy(src, 0, dst, 0, src.Length * sizeof(int));
}
}
경고를 표시하지 않는 경우
이 규칙의 경고는 표시해야 합니다.
참고 항목
GitHub에서 Microsoft와 공동 작업
이 콘텐츠의 원본은 GitHub에서 찾을 수 있으며, 여기서 문제와 끌어오기 요청을 만들고 검토할 수도 있습니다. 자세한 내용은 참여자 가이드를 참조하세요.
.NET