Параметры

Необязательные параметры

При выборе параметров метода некоторым из них (и даже всем) можно присваивать значения по умолчанию. В результате в вызывающем такой метод коде можно не указывать эти аргументы, а принимать уже имеющиеся значения. Кроме того, при вызове метода существует возможность указать аргументы, воспользовавшись именами их параметров.

public static class Program {  
    private static Int32 s_n = 0;   
    private static void M(Int32 x = 9, String s = "A",     
                DateTime dt = default(DateTime), Guidguid = new Guid()) {     
                Console.WriteLine("x={0}, s={1}, dt={2}, guid={3}", x, s, dt, guid);  
    }
  public static void Main() {
     // 1. Аналогично: M(9, "A", default(DateTime), new Guid());
     M();     
     // 2. Аналогично: M(8, "X", default(DateTime), new Guid());     
     M(8, "X");     
     // 3. Аналогично: M(5, "A", DateTime.Now, Guid.NewGuid());    
     M(5, guid: Guid.NewGuid(), dt: DateTime.Now);     
     // 4. Аналогично: M(0, "1", default(DateTime), new Guid());     
     M(s_n++, s_n++.ToString());     
     // 5. Аналогично: String t1 = "2"; Int32 t2 = 3;     
     // M(t2, t1, default(DateTime), new Guid());     
     M(s: (s_n++).ToString(), x: s_n++);
     } 
}

При выполнении этого кода выводится следующий результат: x=9, s=A, dt=1/1/0001 12:00:00 AM, guid=00000000-0000-0000-0000-000000000000 x=8, s=X, dt=1/1/0001 12:00:00 AM, guid=00000000-0000-0000-0000-000000000000

Ключевое слово var

В C# поддерживается возможность определения типа используемых в методе локальных переменных по типу используемого при их инициализации выражения:

  var collection = new Dictionary<String, Single>() { { "Grant", 4.0f } };   
  // Вывод: System.Collections.Generic.Dictionary`2[System.String,System.Single]
  ShowVariableType(collection);
  foreach (var item in collection) {     
  // Вывод: System.Collections.Generic.KeyValuePair`2                           
  [System.String,System.Single]    ShowVariableType(item);

В данном случае var удобно использовать, т.к в словаре нам бы не пришлось лишний раз указывать типы ключа и значения. Да и в случае, если мы решим изменить эти типы, то придётся форматировать меньшее количество кода.

В Microsoft Visual Studio при наведении указателя мыши на ключевое слово var появляется всплывающая подсказка с названием типа, определяемого компилятором. Функцию неявного задания типа локальных переменных в C# следует задействовать при работе с методами, использующими анонимные типы. Они подробно рассматривают в главе 10.

Тип параметра метода при помощи ключевого слова var объявлять нельзя. Ведь компилятор будет определять его, исходя из типа аргументов, передаваемых при вызове метода. Вызова же может вообще не быть или же, наоборот, их может быть несколько. Аналогично, нельзя объявлять при помощи этого ключевого слова тип поля. Для такого ограничения в C# существует множество причин. Одна из них — возможность обращения к полю из нескольких методов.

results matching ""

    No results matching ""