我已经看过多个教程,它们显示了包含参数或简单空的括号的C#方法创建。我还看到了用括号写的C#方法。
public int Value {
get{ return _Value; }
set{ _Value = value; }
}
我没有测试过该代码,但是否允许?它被认为是不好的形式吗?
答案 0 :(得分:13)
这是一个属性而不是方法。如果你创建一个方法,那么它需要()。
答案 1 :(得分:4)
正如Philip的回答,你的示例代码实际上是一个属性,
但是你可能已经碰到了许多人真正错过的东西,那就是使用一种或两种方法实现了属性。它们由编译器为您创建,并包含每个get和/或set块的内容。
所以,属性:
public string Name {
get {
return "Fred";
}
}
更好的写作方式:
public string GetName() {
return "Fred";
}
答案 2 :(得分:4)
声明或调用方法时必须使用括号。
正如其他人所说,你所展示的是一个属性,它在幕后实现了一种或两种方法(每种方法都有一个“getter”和“setter”)。
但是,您有时会看到没有括号的方法名称 - 这些名称称为方法组,用于构建委托类型的实例。
例如:
public void Foo(string x)
{
...
}
...
Action<string> action = Foo;
此处Action<string>
是一个委托类型,表示具有单个字符串参数和void返回类型的调用。此赋值创建该委托类型的实例,该实例在调用时将调用Foo
方法,例如。
action("Test");
将使用“Test”参数调用Foo
。
答案 3 :(得分:1)
这是属性,而不是方法。方法需要括号。
答案 4 :(得分:1)
错误形式取决于上下文,在决定使用属性时需要考虑一些设计注意事项。
MSDN在这里有一个不错的列表:http://msdn.microsoft.com/en-us/library/ms229006.aspx