[英]Inheriting from Array class
我在C#中創建的所有數組都是從Array類中隱式繼承的。 那么為什么Sort()等方法不能用於我創建的數組。 例如,請考慮以下代碼:
int [] arr = new int[]{1,2,3,4,5};
Console.WriteLine(arr.Length); //This works,Length property inherited from Array
Array.Sort(arr); //Works
arr.Sort(); //Incorrect !
請幫助謝謝。
這是因為Sort方法是在Array類上定義的靜態方法,所以你需要像這樣調用它:
Array.Sort(yourArray);
您不需要該類的實例來調用靜態方法。 你可以直接在類名上調用它。 在OOP中,靜態方法沒有繼承的概念。
Sort
是Array
類上的靜態方法,這就是使用Array.Sort()
調用它的原因。 當您嘗試arr.Sort()
,您正在嘗試訪問不存在的實例方法。
您可以使用擴展方法將Sort函數添加為Array類型的實例成員。
public static class ArrayExtension
{
public static void Sort(this Array array)
{
Array.Sort(array);
}
}
例
int [] arr = new int[]{1,2,3,4,5};
arr.Sort();
免責聲明:我沒有編譯並試過這個,但我很確定它會起作用。
Array.Sort()是一個靜態方法,因此您不會看到它掛起實例。 但是,您可以在任何IEnumerable上使用OrderBy()擴展方法來執行您要查找的內容。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.