【发布时间】:2015-03-26 19:49:08
【问题描述】:
我发现自己写了很多这样的代码:
new Foo(7, "a");
Foo 的样子:
class Foo {
int bar;
string baz;
public Foo(int bar, string baz) {
this.bar = bar;
this.baz = baz;
}
}
受过 C# 培训的程序员会如何处理这个问题?写this.bar = bar 和this.baz = baz 有效,但感觉很奇怪。
【问题讨论】:
-
差不多就是这样,有几种不同的方法可以做到这一点,但没有一种方法真的更快。大多数逻辑不会经常进入构造函数,所以它不是那么糟糕
-
bar 和 baz 是类变量。对于属性,您需要定义 setter 和 getter。您可以使用一组;得到;或使用私有变量来存储值。见msdn.microsoft.com/en-us/library/aa287786%28v=vs.71%29.aspx
-
@Tarik 字段适用于私人成员(默认情况下是
bar和baz)。如果bar和baz是公开的,我会同意你的看法。 -
@DStanley 我在这里可能听起来有点迂腐,但我的理解是属性只有在使用访问器定义时才如此,否则它们是类成员。在某些情况下,这种区别会有所不同:例如,当绑定到对象列表时,您可以绑定到属性,但不能绑定到公共成员。
-
@Tarik 啊,我刚刚注意到标题已被编辑.. 这可以解释它。
标签: c# constructor idioms