Я изучаю C# и сталкивался с ошибкой. Все мои методы являются общедоступными. Я подражаю коду из книги, в которой говорится: «Предположим, вы определили класс Vector и этот вектор является ссылочным типом и имеет переменную int member, называемую Value:», и она продолжается с кодом 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 Значение {get {return _value;} set {_value = значение}}; '? –
Свойства в .NET - это не только геттер/сеттеры. Они значительны и являются частью интерфейса класса. Они отображаются отдельно в метаданных, становятся сериализованными/десериализованными, сопоставляются с таблицами базы данных и т. Д. Поле поддержки - это всего лишь деталь реализации. –