簡體   English   中英

繼承自Array類

[英]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中,靜態方法沒有繼承的概念。

SortArray類上的靜態方法,這就是使用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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM