【问题标题】:Size an array within a class array in C#在 C# 中的类数组中调整数组的大小
【发布时间】:2016-05-02 03:01:44
【问题描述】:

我有一个包含一个数组和另一个对象的类:

public class MyClass
{
    public double[] myArray;
    public int otherObject;
};

现在我想创建该类的不同数组实例:

static void Main(string[] args)
{
    MyClass[] classArray1 = new MyClass[classArraySize1]
    MyClass[] classArray2 = new MyClass[classArraySize2]
};

但是我如何为每个classArray 分别调整myArray 的大小?

稍后应该为它们分配这样的值:

classArray1[i].myArray[j] = 1.0;
classArray2[n].myArray[k] = 2.0;

【问题讨论】:

  • 问题是什么?顺便说一句,你甚至没有用 MyClass 的实例初始化你的数组。

标签: c# arrays class initialization


【解决方案1】:

您可以向您的类添加一个构造函数,您可以使用该构造函数将数组初始化为给定的大小:

public class MyClass
{
    public double[] myArray;
    public int otherObject;

    public MyClass(int size)
    {
        myArray = new double[size];
    }
}

然后您可以为MyClass 数组设置myArray 的大小,如下所示:

int numMyClasses = 123;
int sizeMyArray = 456;

// Manually
MyClass[] classArray1 = new MyClass[numMyClasses];
for (int i = 0; i < numMyClasses; i++)
    classArray1[i] = new MyClass(sizeMyArray);

// LINQ
MyClass[] classArray2 = new MyClass[numMyClasses]
    .Select(x => new MyClass(sizeMyArray)).ToArray();

【讨论】:

  • 大声笑。你不是在重新发明轮子......你正在建造一台时间机器:D.
【解决方案2】:

构造函数是(在我看来)最好的方法。

public class MyClass
{
    public double[] myArray;
    public int otherObject;

    public MyClass(int ArraySize)
    {
        myArray = new double[ArraySize];
    }
}

static void Main(string[] args)
{
    MyClass custom1 = new MyClass(10); // <-- new instance of your class
    custom1.myArray // <-- holds your array
    custom1.otherObject // <-- holds your object
}

【讨论】:

    【解决方案3】:

    你可以用这个:

    MyClass[] classArray1 =
    {
        new MyClass { myArray = new double[classArraySize1] },
        new MyClass { myArray = new double[classArraySize1] }
    };
    
    MyClass[] classArray2 =
    {
        new MyClass { myArray = new double[classArraySize2] },
        new MyClass { myArray = new double[classArraySize2] }
    };
    

    【讨论】:

      【解决方案4】:

      你可以像这样动态设置它们

      static void Main(string[] args)
      {
          MyClass[] classArray1 = new MyClass[classArraySize1]
          MyClass[] classArray2 = new MyClass[classArraySize2]
      
          classArray1[i].myArray = new double[whatever_size_you_want];
          classArray2[i].myArray = new double[whatever_size_you_want];
      };
      

      【讨论】:

        猜你喜欢
        • 2012-10-06
        • 1970-01-01
        • 2017-01-05
        • 2013-05-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多