class Program
{
class Ad
{
public string _name { private get; set; }
}
public static void Main()
{
Ad ad = new Ad();
Console.WriteLine(ad._name = "Name");
}
}
代码输出:"名称" ,但_name字段获取是私有的。为什么我没有收到错误?
答案 0 :(得分:0)
我知道你在做什么。我想你的代码是这样的:
class Program
{
class Ad
{
public string _name { private get; set; }
}
public static void Main()
{
Ad ad = new Ad();
Console.WriteLine(ad._name = "Name");
Console.ReadLine();
}
}
当然它会起作用,因为你实际上并没有调用ad._name的获取。
试试这个,你会看到:
class Program
{
class Ad
{
public string _name { private get; set; }
}
public static void Main()
{
Ad ad = new Ad();
ad._name = "Name";
Console.WriteLine(ad._name);
Console.ReadLine();
}
}
您将收到以下错误:“错误1属性或索引器'ConsoleApplication7.Program.Ad._name'无法在此上下文中使用,因为get访问器无法访问...”
答案 1 :(得分:0)
为什么我没有收到错误?
因为您正在编写分配结果。代码string result = ad._name = "Name"
会将ad._name = "Name"
的结果存储在result
变量中,即“名称”。
所以你没有像@Jon addresses那样调用getter。
简单赋值表达式的结果是赋给左操作数的值。结果与左操作数的类型相同,并且始终归类为值。