当前位置:  开发笔记 > 编程语言 > 正文

C#中的适当变量声明

如何解决《C#中的适当变量声明》经验,为你挑选了2个好方法。

我注意到有些人声明了一个私有变量,然后是一个带有get和set语句的公共变量:

private string myvariable = string.Empty;
public string MyVariable
{
    get { return myvariable; }
    set { myvariable = value ?? string.Empty; }
}

然后有些人只做以下事情:

public string MyVariable
{
    get { return value; }
    set { MyVariable = value; }
}

作为一个没有智慧的熊(是的,我有孩子......你为什么问?)我无法弄清楚为什么你会选择一个而不是另一个.使用公共变量是否同样有效,您可以使用变量的set方法随时设置?

任何人都可以为我阐明这一点吗?

更新:在几个人指出它不能编译后,我纠正了第二个例子.对此感到抱歉,但问题仍然存在......



1> Jarrod Dixon..:

您的第二个示例将无法编译,因为getter的值变量不存在.此外,setter会导致同名的StackOverflow异常!

在C#3.0中,您可以使用以下语法让编译器创建私有后备变量:

public string MyVariable { get; set; }

但是,这不会给你第一个例子的额外空值检查.如果您需要在setter中使用自定义逻辑,则可能必须坚持使用第一个示例的方法.


+1使用单词eponymous正确回答:)
我认为他应该使用StackOverflow获得积分而不是这个网站的名称... ;-)

2> Jon Skeet..:

正如其他人所提到的,你的第二个例子没有编译.

但是,没有使用公共领域有很好的理由.实际上,您的示例演示了其中一个 - 对于此属性,即使您将其设置为null,如果再次请求它,也会返回一个空字符串.不管是恰当与否对于财产(这是稍微奇怪)取决于确切使用-但它不是一个公共领域的行为.

我有一篇关于为什么属性比公共领域更好的文章,你可能会发现它们很有用.

推荐阅读
重庆制造漫画社
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有