【问题标题】:Since the C# Array class is abstract, how is it instantiated?既然 C# Array 类是抽象的,那么它是如何实例化的呢?
【发布时间】:2020-12-05 20:56:28
【问题描述】:

我刚开始学习 C#,发现 Array 是一个抽象类,而不是具体类。我想知道如果在文档中将数组实例声明为抽象(如https://docs.microsoft.com/en-us/dotnet/api/system.array?view=net-5.0 所示),如何创建数组实例。

【问题讨论】:

  • 你不能直接实例化Array类,如果你正在寻找一种方法来实例化一个数组读取this
  • 根据链接文章的说明,允许编译器从中派生,只有系统和编译器。这是一门特殊的课程。
  • 参见stackoverflow.com/questions/19914523/…stackoverflow.com/questions/11163297/… 并注意他们说的是从零开始的一维数组(普通数组)。在 .NET 中有多维数组int[1, 2] 和基于非零的数组(例如,第一个索引为 1 的数组)。这些都是基于不同的手法。 SZArrayHelper 支持“标准”数组(单维,基于零)
  • “如何创建数组实例” -- 怎么可能创建TextWriterTextReader 实例?怎么可能创建Stream 实例?怎么可能创建 any abstract 类?坦率地说,这个问题没有意义......您要么是在问如何可以做一些显而易见的事情(即您创建 Array子类,而不是 Array 本身),或者您正在询问如何完成无法完成的事情(即创建Array 的裸实例)。无论哪种方式,都没有用。

标签: c#


【解决方案1】:

'Array'是一个抽象类,所以不能直接实例化。但是,它有一个静态的“CreateInstance”方法,该方法创建一个包含所需类型元素的数组的具体实现的实例。
https://docs.microsoft.com/en-us/dotnet/api/system.array.createinstance?view=net-5.0#System_Array_CreateInstance_System_Type_System_Int32_

还有:Difference between Array.CreateInstance and using the new operator to create new array instance

【讨论】:

    猜你喜欢
    • 2020-11-15
    • 2017-12-08
    • 2019-12-25
    • 2013-08-23
    • 2021-07-27
    • 2022-06-13
    • 2013-03-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多