繁体   English   中英

C#自动实现的属性-使用内部类

[英]C# Auto-Implemented Properties - Using Inside Class

我在使用自动实现的属性时寻求有关最佳做法的建议。

如果不需要引用类中的属性,则始终使用它们。 但是,如果我确实需要在类内部访问该属性,则习惯于手动添加私有属性。

例如,如果我有一个名为Person的类,具有firstName和lastName属性,而不必在类内处理该数据,则可以这样做:

public class Person
{
    public string firstName { get; set; }
    public string lastName { get; set; }
}

但是,如果我需要对这些属性进行操作,请执行以下操作:

public class Person
{
    private string _firstName;
    public string firstName
    {
        get { return _firstName; }
        set { _firstName = value; }
    }

    private string _lastName;
    public string lastName
    {
        get { return _lastName; }
        set { _lastName = value; }
    }

    public void testMethod()
    {
        Debug.Print(_firstName + " " + _lastName);
    }

}

我的问题:这是好习惯吗?

不,没有意义。 当您需要做的不仅仅是设置/获取支持字段时,您应该转到完全实现的属性。

就目前情况而言:

Debug.Print(FirstName + " " + LastName); //convention says use UpperCamel for props

绝对没问题,引入后备字段只会给代码带来不必要的干扰。

相反,如果您想进行一些验证:

public string LastName
{
    get { return _lastName; }
    set { 
        if(value.Contains("!")){
            throw new Exception("names can't contain '!'");
        }
        _lastName = value; }
}

现在,您有充分的理由放弃自动实现的属性。

如果您只是想避免第二次查找的开销,请不必担心。 很有可能这将永远不会导致性能问题,如果确实如此,您将通过测量代码时序来找出答案。 试图以牺牲清晰度为代价来编写最佳效率的代码是一个糟糕的目标,并且会导致代码混乱。 每次都需要提高清晰度,并且当程序运行缓慢时,您可以返回并找出导致它的原因。 研究已经确定,极有可能不会达到您的预期,因此尝试猜测并不是一种经济的追求。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM