到目前为止,我的印象是Properties和amp;Methods在C#中是两个不同的东西.但是后来我做了类似下面的事情.

在此处输入图像描述

这让我大开眼界.我原以为会有一个属性stringProp和一个方法stringProp,但结果我得到了这个.

为什么会这样?有人能解释一下吗.

推荐答案

是的,编译器为属性生成一对get和set方法,并为自动实现的属性生成一个私有备份字段.

public int Age {get; set;}

相当于:

private int <Age>k__BackingField;

public int get_Age()
{
     return <Age>k__BackingField;
}

public void set_Age(int age)
{
    <Age>k__BackingField = age;
}

访问您的属性的代码将被编译为调用这两个方法之一.这正是将公共领域变为公共财产是突破性变化的原因之一.

看琼恩·斯基特的Why Properties Matter.

.net相关问答推荐

.NET 7,8 System.Text.Json反序列化多态参数

";Make Async ValueTask/ValueTask方法分期分配发生了什么?

无法对.NET MAUI类库进行单元测试

为什么 StyleCop 建议在方法或属性调用前加上this?

您是否使用 TestInitialize 或测试类构造函数来准备每个测试?为什么?

通用枚举到int的C#非装箱转换?

File.ReadAllLines() 和 File.ReadAllText() 有什么区别?

为什么需要 XmlNamespaceManager?

Linq查询分组并 Select 第一个项目

ASP.NET Core 等效于 ASP.NET MVC 5 的 HttpException

C#:获得完整的桌面大小?

参数命名:文件名还是文件名?

如何使用配置转换删除 ConnectionString

beforefieldinit 标志有什么作用?

如何获取命名空间中的所有类?

如何从文件中删除单个属性(例如只读)?

说明 C# 中 volatile 关键字的用法

找不到 System.Windows.Media 命名空间?

绑定在代码隐藏中定义的对象

WPF 中的 Application.DoEvents() 在哪里?