到目前为止,我的印象是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相关问答推荐

Azure Function应用程序-如何升级.NET运行时

获取Ef-Core集合的DeleteBehavior

在`MAUI`应用中使用Android`MediaPlayer`的`prepare`方法只在发布模式下和在物理设备上崩溃

.NET Async / Await:状态机如何知道何时继续执行?

使用 PEM 文件创建 DSA 签名

在 WP7 中将 List 转换为 ObservableCollection

C# 中的批量更新

在生产中使用实体框架(代码优先)迁移

在c#中计算中位数

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

将屏幕捕获为位图

使用 .NET 中的代码更改桌面墙纸

是否有 TLS 1.2 的 .NET 实现?

C# 编译为 32/64 位,或任何 cpu?

我不了解应用程序域

C# 中的 F# List.map 类似功能?

获取系统中已安装的应用程序

是否可以判断对象是否已附加到实体框架中的数据上下文?

ValueTypes 如何从 Object (ReferenceType) 派生并且仍然是 ValueTypes?

使用没有catch块的try-finally块