所以我创建了一个包含两个数组(vector和vectorNorm)的类,并希望包含一些setter和getter函数。
using System;
public class Vectors {
double[] vector = new double[2];
double length;
double[] vectorNorm = new double[2];
public double[] Vector {
private set {
Console.WriteLine("set called");
this.vector = value;
}
get {
Console.WriteLine("get called");
return this.vector;
}
}
public double[] VektorNorm {
get {
return vector;
}
set {
vector = value;
}
}
public double Length {
get {
return length;
}
set {
length = value;
}
}
public Vectors(double parVector1, double parVector2) {
Vector[0] = parVector1;
Vector[1] = parVector2;
}
public Vectors() {
;
}
public void calcLength() {
Length = (Vector[0]*Vector[0])+(Vector[1]*Vector[1]);
Console.WriteLine("Length " + Math.Sqrt(length));
Console.ReadLine();
}
}
我执行的程序看起来像这样
using System;
public class VectorsProg {
public static void Main() {
var vec1 = new Vectors(3, 4);
vec1.calcLength();
vec1.Vector[0] = 10;
Console.WriteLine(vec1.Vector[0]);
Console.ReadLine();
}
}
控制台上的输出如下所示
get called
get called
get called
get called
get called
get called
Length 5
get called
get called
10
所以Console.WriteLine(" set called")永远不会被执行,但vec1.vector [0]的值会改变。我还包括了#34;私人套装"这甚至不允许其他类使用set函数,但值仍然会改变。
我的代码在某种程度上是错误的吗? 任何解决方案?