繁体   English   中英

在C#中的类数组中调整数组大小

[英]Size an array within a class array in C#

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

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;

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

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();

您可以像这样即时设置它们

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];
};

您可以使用此:

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] }
};

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

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
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM