我正在尝试为数组创建一个getter / setter,但我不确定如何编写它。该类将具有多个属性,需要修改并从另一个类访问。这是我想要做的事情的想法:
class MyArrayClass {
private double[] myArray = {1.1, 2.2};
public double MyArray {
get { return myArray[index]; }
set { myArray[index] = value; }
}
}
class AnotherClass {
MyArrayClass mAC = new MyArrayClass();
mAC.MyArray[1] = 3.3;
}
现在代码不起作用,但我希望它表达我正在尝试做的事情。我能够使用下面的代码实现我想要的东西(它可以工作)但是它只适用于该类中的一个属性。
class MyArrayClass {
private double[] myArray = {1.1, 2.2};
public double this[int index] {
get { return myArray[index]; }
set { myArray[index] = value; }
}
}
class AnotherClass {
MyArrayClass mAC = new MyArrayClass();
mAC[1] = 3.3;
}
我也不确定如何定义不同索引位置的值而不多次执行,例如。
mAC.MyArray[0] = 1.1;
mAC.MyArray[1] = 2.2;
与以下内容相反:
mAC.MyArray[0, 1] = {1.1, 2.2};
对不起,如果这是一团糟,但我希望它传达了我想要实现的目标。
答案 0 :(得分:1)
由于您有多个数组,因此需要公开几个类似于数组的可索引属性。以第二个MyArrayClass
为例,您可以这样做:
class MyTwoArrays {
private MyArrayClass array1 = ...;
private MyArrayClass array2 = ...;
public MyArrayClass Array1 {
get { return array1; }
}
public MyArrayClass Array2 {
get { return array2; }
}
}
现在您可以像这样使用它:
MyTwoArrays two = new MyTwoArrays();
two.Array1[0] = 123.456;
two.Array2[0] = 789.432;
答案 1 :(得分:0)
mAC.MyArray[0, 1] = {1.1, 2.2};
这不是它应该的方式,它必须一个接一个地完成。你正在使用的方式会改变它的二维数组,(不知何故,它会无效,零主要元素和每个元素中有1个元素)。
mAC.MyArray[0] = 1.1;
mAC.MyArray[1] = 2.2;
是设置数组的有效方法。
class MyArrayClass {
private double[] myArray = {1.1, 2.2};
public double this[int index] {
get { return myArray[index]; }
set { myArray[index] = value; }
}
}
class AnotherClass {
MyArrayClass mAC = new MyArrayClass();
mAC[1] = 3.3;
}
代码有效,因为如果执行该过程的有效方式是因为仅在 this 情况下,您将实际的索引号传递给数组以从中返回值。在第一个代码块中,没有索引号,返回值是Array
个对象。
答案 2 :(得分:0)
如果我理解正确,您希望索引器访问2个代表动物身高和体重的内部数组。
class MyArrayClass {
private double[] heights = {1.1, 2.2};
private double[] weights = {1.1, 2.2};
public double[] this[int index] { //Or Tuple<double ,double>
get { return new double[] { heights[index], weights[index] }; }
set { heights[index] = value[0]; weights[index] = value[1]; }
}
}
如果您打算从1个数组中访问2个数字,也可以这样做。
class MyArrayClass {
private double[] myArray = {1.1, 2.2, 3.3, 4.4};
public double[] this[int index] {
get { return new double[] { myArray[index*2], myArray[index*2+1] }; }
set { myArray[index*2] = value[0]; myArray[index*2+1] = value[1]; }
}
}
这不包括检查索引或参数(它可以为null或长度为&lt; 2)。
在这种情况下,拥有一个Animal结构或其他东西可能更方便:
class MyArrayClass {
private Animal[] animals = {new Animal(1.1, 1.1), new Animal(2.2, 2.2)}
public Animal this[int index] {
get { return animals[index]; }
set { animals[index] = value; }
}
}