C#将类派生为数组

时间:2018-07-21 03:35:56

标签: c# oop

我在这里找不到我的问题,所以我问,希望这是一个新问题。

假设我有一个名为 Base 的基类,并且 Base 中有一个名为 Reset 的函数,我将定义< strong> Base 类,但是每次我想重置所有数组项时,都必须迭代所有元素 Reset 函数。

我的问题是:有没有办法将 Base 类派生为 Child 类,该类由 Base 数组组成,并创建一个< Child 中的strong> ResetAll 函数可以迭代数组的所有 Reset 函数?

或者创建一个 ResetAll 函数将触发所有 Reset 函数?

1 个答案:

答案 0 :(得分:3)

您不需要创建派生类。基本上,您不想遍历数组中的所有基础对象,并在想重设所有对象时调用它们的Reset方法。

您所需要做的就是扩展基础数组的方法。

您可以在https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/classes-and-structs/extension-methods

了解扩展方法

对于您的情况,您可以按以下方法创建扩展方法。

public static class BaseExtensions
{
    public static void ResetAll(this Base[] baseArray)
    {
        foreach(var baseItem in baseArray)
        {
            baseItem.Reset();
        }
    }
}

您可以按以下方式使用上述方法。

//Let say you have a an array of base as following.
Base[] items = new Base[2];
items[0] = new Base();
items[1] = new Base(); 

//You can reset them as following.
items.ResetAll(); //This is the ResetAll extension method created above.

这应该可以帮助您解决问题。