IEnumerable과 같은 외부 클래스에 메서드를 추가하는 데 사용됩니다. 하지만 C#으로 배열을 확장 할 수 있습니까?C#에서 배열을 확장 할 수 있습니까?
다차원 임에도 불구하고 IEnumerable로 변환하는 배열에 메서드를 추가 할 계획입니다. 내가 그것을했다
IEnumerable과 같은 외부 클래스에 메서드를 추가하는 데 사용됩니다. 하지만 C#으로 배열을 확장 할 수 있습니까?C#에서 배열을 확장 할 수 있습니까?
다차원 임에도 불구하고 IEnumerable로 변환하는 배열에 메서드를 추가 할 계획입니다. 내가 그것을했다
static class Extension
{
public static string Extend(this Array array)
{
return "Yes, you can";
}
}
class Program
{
static void Main(string[] args)
{
int[,,,] multiDimArray = new int[10,10,10,10];
Console.WriteLine(multiDimArray.Extend());
}
}
메서드에서 "이 배열 배열"은 무엇을 의미합니까? 나는 Array가 추상 클래스라고 생각한다. 그래서이 배열 배열을 쓰면 여기서 정확히 무엇을하고 있는가? – VatsalSura
이 배열 배열은 * this Array *가 확장 할 형식을 나타냅니다. *이 배열은 * this T * 일 수도 있고, 메서드는 * public static void Extend
관련되지!
public static class ArrayExtensions
{
public static IEnumerable<T> ToEnumerable<T>(this Array target)
{
foreach (var item in target)
yield return (T)item;
}
}
"this 배열 대상"은 메서드에서 무엇을 의미합니까? 나는 Array가 추상 클래스라고 생각한다. 그래서 "this Array target"을 쓰면 여기서 정확히 무엇을하고 있는가? – VatsalSura
예. 어느 이미 같이 Array
클래스를 확장을 통해, 또는 배열의 특정 종류 또는 일반적인 배열을 확장하여 :
public static void Extension(this string[] array)
{
// Do stuff
}
// or:
public static void Extension<T>(this T[] array)
{
// Do stuff
}
마지막 하나는 그것이 작동하지 것처럼, Array
을 확장 정확히 동일하지 않습니다를 다차원 배열이므로 좀 더 제약이있어 유용 할 수 있습니다.
+1 @ maciejkow보다 구현이 더 안전합니다. 나는 전에 비슷한 방법을 사용하여 배열 확장 메서드를 작성했습니다. –
여기에 질문을 게시하는 것보다 시도하는 것이 짧지 않습니까? –
나는 시도했다. 그러나 나는 그 당시의 과정에서 잘못된 것을 만들었다. 이제 예상 한 동작을 얻고 있습니다. –