我正在学习C#并遇到错误。我所有的方法都是公开的。我正在模拟一本书中的代码,其中指出“假设您定义了一个名为Vector的类,并且该Vector是一个引用类型并且具有一个名为Value的int成员变量”,并且它继承了Program.cs代码(我复制了该代码) 。所以我试图模拟Vector类,并且当我编译它时,由于其保护级别,Vector.Value无法访问。Vector.Value由于其保护级别而无法访问
的Program.cs:
using System;
namespace ReferenceType
{
public class Program
{
public static void Main(string[] args)
{
Vector x, y;
x = new Vector();
x.Value = 30;
Console.WriteLine(y.Value);
y.Value = 50;
Console.WriteLine(x.Value);
}
}
}
Vector.cs:
namespace ReferenceType
{
public class Vector
{
private int Value;
public int GetterSetter{
get { return Value; }
set { Value = value; }
}
}
}
哪儿了'GetterSetter'来自?你为什么要声明'Value'是私人的?在你的“假设:”引用中似乎没有提到那些东西。 –
您创建了一个属性'GetterSetter'而不是'Value',并创建了一个名为'Value'的私有支持字段。我不认为这就是你想要做的。也许你想写'public int Value {get; set;}'或'int _value; public int Value {get {return _value;} set {_value = value}};'? –
.NET中的属性不仅仅是getter/setter。它们很重要,是班级界面的一部分。它们分别出现在元数据中,被序列化/反序列化,映射到数据库表等。后台字段只是一个实现细节 –