2

我看过多个教程,这些教程显示了使用包含参数的括号或简单的空的括号创建 C# 方法。我还看到了一个不带括号的 C# 方法。

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

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

4

5 回答 5

13

那是属性而不是方法。如果您创建一个方法,那么它需要 ()。

于 2011-10-09T21:08:47.893 回答
4

正如菲利普的回答,您的示例代码实际上是一个属性,

但是您可能遇到了许多人实际上错过的东西,那就是属性是使用一两种方法实现的。它们由编译器为您创建并包含每个 get 和/或 set 块的内容。

所以,一个属性:

public string Name {
  get {
    return "Fred";
  }
}

是一种更好的写作方式:

public string GetName() {
  return "Fred";
}
于 2011-10-09T21:15:40.967 回答
4

声明或调用方法时必须使用括号。

正如其他人所说,您所展示的是一个属性,该属性在幕后实现为一个或两个方法(“getter”和“setter”各一个)。

但是,您有时会看到没有括号的方法名称 - 这些称为方法组,用于构造委托类型的实例。

例如:

public void Foo(string x)
{
    ...
}

...
Action<string> action = Foo;

Action<string>是一个委托类型,表示具有单个字符串参数和 void 返回类型的调用。此分配创建该委托类型的实例,该实例将在调用该Foo方法时调用该方法,例如

action("Test");

Foo使用“Test”参数调用。

于 2011-10-09T21:35:02.943 回答
1

那是一种属性,而不是一种方法。方法需要括号。

于 2011-10-09T21:09:37.727 回答
1

糟糕的形式取决于上下文,在决定是否使用属性时需要考虑一些设计注意事项。

MSDN 在这里有一个很好的列表:http: //msdn.microsoft.com/en-us/library/ms229006.aspx

于 2011-10-09T21:41:12.310 回答