배열 메소드가 배열 인스턴스에 내장되지 않은 이유는 무엇입니까?
문제
어리석은 질문에 대해 미안하지만 나를 괴롭히는 것 ...
int[] i = {3, 2, 1};
//why
Array.Sort(i);
//instead of
i.Sort();
char c = 'c';
//why
char.IsLetter(c);
//instead of
c.Isletter();
해결책
답변을 제공하는 이러한 다른 질문을 식별 한 Pedro D 'Aquino에게 감사드립니다.
기본 요점은 구조의 인스턴스 메소드가 스레드 안전이 아니라 정적 메소드라는 것입니다.
이 질문보기 :
다른 팁
확장 방법을 사용하여 .NET 3.0을 사용하는 경우 직접 수행 할 수 있습니다.
public static class Extensions
{
public static bool IsLetter(this chr)
{
return char.IsLetter(chr);
}
}
그런 다음 : C.isletter ()
또는 원하는 방식으로 수행하십시오. 정렬에서 동일합니다
구현 결정입니다. 나는 모든 것이 프레임 워크 디자이너의 헤드를 통해 무슨 일이 있었는지 모르겠지만, 한 가지 이유는 최소한의 노력으로 사용자 정의 유형 배열을 정렬 할 수 있도록하는 것입니다.
Icompayable을 구현하는 모든 클래스는 배열에 넣고 정렬 할 수 있습니다. 배열의 메소드라면 사용자 정의 유형에 새 배열 유형을 작성해야합니다.
또한 다른 사람들이 언급했듯이 원시 유형은 배열의 디자인이 필요합니다.
제휴하지 않습니다 StackOverflow