首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >C#属性实际上是方法吗?

C#属性实际上是方法吗?
EN

Stack Overflow用户
提问于 2014-04-16 15:23:18
回答 1查看 8.2K关注 0票数 77

到目前为止,我的印象是PropertiesMethods在C#中是两个不同的东西。但是后来我做了一些类似下面的事情。

这让我大开眼界。我原以为会有一个属性stringProp和一个方法stringProp,但结果却是这样。

为什么会发生这种情况?有人能解释一下吗。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-04-16 15:26:20

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

代码语言:javascript
复制
public int Age {get; set;}

变成了等价物:

代码语言:javascript
复制
private int <Age>k__BackingField;

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

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

访问您的属性的代码将被编译为调用这两个方法之一。这正是为什么将公共字段更改为公共属性是一个突破性变化的原因之一。

参见Jon Skeet的Why Properties Matter

票数 113
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23102639

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档