c#数组设置和获取 - 值的变化,即使我写了#34;私人设置"

时间:2017-11-24 13:14:18

标签: c# arrays get set setter

所以我创建了一个包含两个数组(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函数,但值仍然会改变。

我的代码在某种程度上是错误的吗? 任何解决方案?

0 个答案:

没有答案