c# - 为什么要使用成员变量?

标签 c# variables properties logic il

<分区>

Possible Duplicate:
Difference between Property and Field in C#

几周前我开始了一份使用 C# 的新工作(我基本上已经开始学习 - 自从 - 在那里)并且我已经看到了几种做事的方式,我很好奇为什么(看作为我正在学习新知识,这些年来他们都学到了东西。)

基本上,我想找出原因:

private int i;

优于:

private int I {get;set;}

如果答案是(正如我怀疑的那样)为调用 get/sets 生成了额外的 IL,那么为什么自动实现的 get/sets 存在呢?为什么是

public int i;

比:

public int I{get;set;}

更好奇的是为什么我不总是使用属性,或者为什么我不避免像瘟疫这样的自动实现方法,一个或另一个。

我知道当我想到它时这听起来像是一个合乎逻辑的问题,但当我写它时却不是那么多,所以我希望它能说明一些道理。

谢谢

最佳答案

很多时候您需要超出自动实现的属性定义的额外逻辑。

例如,如果您想实现 INotifyPropertyChanged,在这种情况下,您将需要自己的支持字段,因此您可以这样写:

private int someValue;
public int SomeValue
{
    get { return this.someValue; }
    set
    {
        if (value != this.someValue)
        {
            this.someValue = value;
            this.RaisePropertyChanged("SomeValue"); // This extra logic required...
        }
    }
}

关于c# - 为什么要使用成员变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9335856/

相关文章:

c# - 为什么派生类的泛型会产生非派生类?

c++ - 在 C++ 中是否有等效的 Java equals 方法?

iOS即使关闭应用程序如何存储数据

java - 有关通过 PropertyChangeSupport 更新 Swing GUI 的设计问题

java - jsp可以访问.jar文件吗?

php - 在 PHP 中从具有动态类名的类中获取静态属性

c# - 在 Repeater 控件中显示图像

c# - 如何使用start和limit进行分页

c# - 没有通用扩展方法的类型推断

javascript - 如何使用javascript为数组中的每个项目设置唯一变量?