【问题标题】:How to inherit from Arrays in C#? [duplicate]如何从 C# 中的数组继承? [复制]
【发布时间】:2015-07-31 14:03:29
【问题描述】:

我需要一个带有自定义方法的数组。

MyObject[] myObject = {myA, myB, myC};
myObject.myMethod(); // do my stuff

1.这可能吗?

2. myMethod 如何能够在内部访问myA、myB 和myC?

-

PS:抱歉,这里欺骗了所有 投反对票的 c# 巫师。但我只是从语言开始,我不知道 referred question 的“枚举”。所以我确实提出了一个更简单更直接的问题,希望能帮助我的同类。

【问题讨论】:

  • 你想达到什么目的?创建一个包含数组和方法来操作数据的类可能是更好的前进方式。
  • 我宁愿不扩展数组,而是IEnumerable<MyObject>

标签: c# arrays inheritance


【解决方案1】:

问:这可能吗?

答:可以,但不能从 Array 继承。不过,另一种机制会对您有所帮助。

问: myMethod 如何能够在内部访问 myA、myB 和 myC?

答:可以使用扩展方法的方式,如下图:

static class Extension
{
    public static string Extend(this Array array)
    {
        return "Yes, you can";
    }
}

class Program
{

    static void Main(string[] args)
    {
        int[,,,] multiDimArray = new int[10,10,10,10];
        Console.WriteLine(multiDimArray.Extend());
    }
}

【讨论】:

    【解决方案2】:

    你可以写扩展方法,see here

    namespace ExtensionMethods
        {
            public static class MyExtensions
            {
                public static void myMethod(this MyObject[] items)
                {
                    foreach(var item in items)
                    {
                       //do something;
                    }
                }
            }   
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-01-12
      • 1970-01-01
      • 2015-03-17
      • 1970-01-01
      • 1970-01-01
      • 2019-01-04
      • 2012-11-25
      相关资源
      最近更新 更多