如何在分配属性时自动处理数据?

Dan*_*don 1 .net c# properties

我有很多次写过C#属性,看起来像这样:

private string _Id;
public string Id
{
    get
    {
        return _Id;
    }
    set
    {
        _Id = value.Trim();
    }
}
Run Code Online (Sandbox Code Playgroud)

上面的代码片段声明了一个名为Id的字符串属性,并使其Trim在传递给setter的值上自动调用扩展方法.没有Trim逻辑,我可以写简单:

public string Id {get; set;}
Run Code Online (Sandbox Code Playgroud)

好像我已经写了很多代码来完成一些简单的事情.

有没有更好的办法?

Jon*_*eet 5

有没有更好的办法?

好吧,你可以让它看起来像更少的代码(并在阅读时减少杂乱的东西):

private string _Id;
public string Id
{
    get { return _Id; }
    set { _Id = value.Trim(); }
}
Run Code Online (Sandbox Code Playgroud)

甚至将整个房产本身放在一条线上:

private string _Id;
public string Id { get { return _Id; } set { _Id = value.Trim(); } }
Run Code Online (Sandbox Code Playgroud)

但不,你不能让一个自动实现的属性做更多的事情,而不是简单的获取/设置为私有变量.

说实话,这真的不是那么多代码 - 它是相当多的语法,但你只需要声明一个变量并写两个语句.我不认为这真的太多了.