繁体   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