>

ValueType 확장 메서드를 사용할 수 있습니다

public static string ToStringN(this ValueType value)
{
    return Convert.ToString(value, System.Globalization.CultureInfo.InvariantCulture);
}

그러나 ValueType 배열의 확장 메소드를 사용할 수 없습니다.

public static void FastReverse(this ValueType[] arr)
{
    for (int i = 0; i < arr.Length / 2; i++)
    {
        ValueType tmp = arr[i];
        arr[i] = arr[arr.Length - i - 1];
        arr[arr.Length - i - 1] = tmp;
    }
}


  • 답변 # 1

    알다시피, 이것은 작동합니다 :

    public static string ToStringN(this ValueType value)
    {
        return Convert.ToString(value, System.Globalization.CultureInfo.InvariantCulture);
    }
    // usage:
    int a = 10;
    a.toStringN();
    
    

    이것은 int 때문입니다   ValueType 입니다 그래서 어떤 확장 방법을 사용하든 ValueType int  그것도 있습니다.

    그러나 pyzwyz의 확장 방법을 사용하는 경우 ,

    ValueType[]
    
    

    이것은 public static void FastReverse(this ValueType[] arr) { for (int i = 0; i < arr.Length / 2; i++) { ValueType tmp = arr[i]; arr[i] = arr[arr.Length - i - 1]; arr[arr.Length - i - 1] = tmp; } } // usage: int[] a = {1,2,3}; a.FastReverse(); // Can't find this method! 때문입니다  그리고 int[]  서로 하위 유형이 아닙니다. 예를 들어 컴파일되지 않습니다 :

    ValueType[]
    
    
    해결 방법은 제네릭을 사용하고 매개 변수를 ValueType[] a = new int[10]; 로 제한하는 것입니다. :

    struct
    
    

    public static void FastReverse<T>(this T[] arr) where T: struct { for (int i = 0; i < arr.Length / 2; i++) { T tmp = arr[i]; arr[i] = arr[arr.Length - i - 1]; arr[arr.Length - i - 1] = tmp; } } 에서 작동하지 않으므로 의도 한 동작이 아닐 수도 있습니다. .

    int?[]

  • 이전 javascript - ReactStrap 모달 닫기 아이콘이 모달에 표시되지 않고 다른 태그와 함께 헤더를 사용하는 방법
  • 다음 excel - 찾기 기능에서 변수 추가가 작동하지 않습니다