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

本文关键字:处理 数据 属性 分配 | 更新日期: 2023-09-27 18:09:59

我曾经多次写过这样的c#属性:

private string _Id;
public string Id
{
    get
    {
        return _Id;
    }
    set
    {
        _Id = value.Trim();
    }
}

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

public string Id {get; set;}

看起来我写了很多代码来完成一些简单的事情。

有更好的方法吗?

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

有更好的方法吗?

你可以让看起来更少的代码(阅读时更少的混乱):

private string _Id;
public string Id
{
    get { return _Id; }
    set { _Id = value.Trim(); }
}

或者甚至把整个属性本身放在一行:

private string _Id;
public string Id { get { return _Id; } set { _Id = value.Trim(); } }

但是,不,你不能让一个自动实现的属性做任何事情,除了简单的get/set为一个私有变量。

老实说,它真的没有那么多代码—它是相当数量的语法,但是您只需要声明一个变量并编写两条语句。我觉得这个要求并不过分。