Обязательные скобки для включения в методы C #? - PullRequest
2 голосов
/ 10 октября 2011

Я видел несколько обучающих программ, которые показывают создание метода C # с круглыми скобками, содержащими параметры или просто пустыми.Я также видел метод C #, написанный без скобок.

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

Я не проверял этот код, но это разрешено?Это считается плохой формой?

Ответы [ 5 ]

13 голосов
/ 10 октября 2011

Это свойство, а не метод.Если вы создаете метод, тогда он требует ().

4 голосов
/ 10 октября 2011

Скобки обязательны при объявлении или вызове метода.

Как уже говорили другие, то, что вы показали, есть свойство, которое реализуется как один или два метода за кулисами (по одному для каждого из"getter" и "setter").

Однако вы иногда увидите имена методов без скобок - они называются группами методов и используются для создания экземпляров.из типов делегатов .

Например:

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

...
Action<string> action = Foo;

Здесь Action<string> - тип делегата, представляющий вызов с одним строковым параметром и типом возврата void.Это назначение создает экземпляр этого типа делегата, который будет вызывать метод Foo при его вызове, например,

action("Test");

вызовет Foo с аргументом «Test».

4 голосов
/ 10 октября 2011

Как и в ответе Филиппа, ваш пример кода на самом деле является свойством,

Но вы, возможно, столкнулись с чем-то, что многие на самом деле упускают, и это то, что Свойства реализуются с использованием одного или двух методов. Они создаются для вас компилятором и содержат содержимое каждого из блоков get и / или set.

Итак, свойство:

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

Это приятнее способ написания:

public string GetName() {
  return "Fred";
}
1 голос
/ 10 октября 2011

Плохая форма зависит от контекста, есть несколько конструктивных соображений, которые следует учитывать при принятии решения об использовании свойства.

MSDN имеет хороший список здесь: http://msdn.microsoft.com/en-us/library/ms229006.aspx

1 голос
/ 10 октября 2011

Это свойство, а не метод. Метод требует скобок.

...