如果(sz!= sz2)sz = sz2,为什么这个代码会这样做?

1 c# linq-to-sql

我第一次创造了一个linq to sql classes.我决定看看课程并找到了这个.

什么......如果(sz!= sz2){sz = sz2; }.我不明白 为什么生成的集合不是this._Property1 = value

    private string _Property1;
    [Column(Storage="_Property1", CanBeNull=false)]
    public string Property1
    {
        get
        {
            return this._Property1;
        }
        set
        {
            if ((this._Property1 != value))
            {
                this._Property1 = value;
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

Gra*_*rdx 5

它只会在属性发生变化时更新.这可能是基于这样的假设:比较比更新可能涉及的引用(以及所有需要的内存管理)更便宜.

  • @GrayWizardx:设置字段不会导致属性更改通知.@Jason D:字符串不是值类型,但你可能是正确的,它与GC成本有关 - 请参阅我的答案. (2认同)