括号必须包含在C#方法中吗?

时间:2011-10-09 21:07:09

标签: c# methods parentheses

我已经看过多个教程,它们显示了包含参数或简单空的括号的C#方法创建。我还看到了用括号写的C#方法。

public int Value {
    get{ return _Value; }
    set{ _Value = value; }
}

我没有测试过该代码,但是否允许?它被认为是不好的形式吗?

5 个答案:

答案 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