2016-04-01 2 views
1

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

В свое время, используя библиотеки на других языках, я иногда сталкиваюсь с предопределенными значениями, которые могут использоваться в рамках функций класса.

object.myFunc(SPECIAL_VALUE); 

Обычно он называется во всех письмах с капитолами и является очень специфическим значением внутри функции. Я полагаю, что он ведет себя так же, как публичная статическая строка , но когда я использую эту идею, intellisense не подбирает ее. Может ли кто-нибудь сообщить мне об общем названии этого параметра параметра, и если они существуют, плюсы и минусы использования такой вещи.

Спасибо,

+0

Возможный дубликат: [Как определить именованные параметры C#] (http://stackoverflow.com/questions/12056639/how-to-define-named-parameters-c-sharp) –

+1

Такие идентификаторы, как C языковой конвенции. C# не имеет предварительного процессора, который позволяет определять значения. Используйте переменную const или переменную readonly или перечисление. Избегайте поиска одного имени для этих трех очень разных типов идентификаторов. –

+0

Вы говорите о значениях по умолчанию для таких параметров, как 'f (int x = 1)', которые используются, когда именованные параметры не указаны? – ja72

ответ

0

Как правило, эти виды констант в C# объявляются и обсаженных, как это ...

public const String MyConstantThingHere = "Some value"; 

В Java, это будет больше похоже на ...

public static final String MY_CONSTANT_THING_HERE = "Some value"; 

Я бы просто назвал эти публичные константы классов. См. HERE.

Кроме того, для справки: http://www.dofactory.com/reference/csharp-coding-standards

Вы также можете использовать статический импорт, чтобы обратиться к ним ...

Смотрите здесь: static imports in c#

+0

Это работает в C#, если я говорю .. Object.Property = Class.MY_CONSTANT; Есть ли способ избежать использования класса. –

+0

Да, используйте статический импорт. Я обновил свой ответ соответственно :) – ManoDestra

0

Я не совсем уверен, что вы имеете в виду. Понятие названных параметров в C# показано в следующем примере:

namespace Testconsole { 

public class obj { 
    public int myFunc(int value1, int value2 = 4, int value3 = 8) { 
     return value1 + value2 + value3; 
    } 
} 

class Program { 
    static void Main(string[] args) { 
     obj adder = new obj(); 
     Console.WriteLine(adder.myFunc(value1: 1, value3: 1)); 
     Console.ReadLine(); 
    } 
} 
} 

Testconsole возвращает 6: value1 устанавливается с «1», value3 устанавливается с «1», значение2 отсутствует и, следовательно, заполняется по умолчанию значение «4».

Также можно передать общественную статическую строку в функции:

Now I got it. 
0

Что вы имеете в виду это:

namespace Testconsole { 

    public class obj { 
     public String myFunc(String mySpecialValue) { 
      return "now I " + mySpecialValue; 
     } 
    } 

    class Program { 
     public static String SPECIAL_VALUE = "got it"; 

     static void Main(string[] args) { 
      obj Learn = new obj(); 
      Console.WriteLine(Learn.myFunc(SPECIAL_VALUE)); 
      Console.ReadLine(); 
     } 
    } 
} 

консоли вывода «постоянный». Они служат двум целям:

Они гарантируют, что значение, имеющее какой-либо смысл («специальное значение», как вы сказали), объявляется в одном месте и повторно используется, так что если оно изменяется, мы меняем его в одном месте.

Они делают наш код более удобочитаемым. Например, мы могли бы хотеть, чтобы два всегда отображали верхние четыре элемента из списка на веб-странице. И у нас может быть вход, который должен всегда содержать четыре символа. Если другие люди просто читают наш код и видят номер 4 здесь и там, может быть неясно, что означает это число 4. Мы хотим, чтобы наш код был максимально понятен.

Так что, когда мы объявляем

const int NUMBER_OF_ITEMS_TO_DISPLAY = 4 

или

const string MAX_INPUT_LENGTH_SETTINGS_KEY = "maximumInputLength" 

Тогда, когда мы используем эти константы в коде другие люди могут сказать, что они означают.

Противоположность использования констант вызывается с использованием «магических чисел» или «магических строк». Они просто появляются в нашем коде без контекста или объяснения. Это может быть просто ценность, которую мы произвольно выбрали, но объявление ее как константы дает ей контекст и смысл.

Заглавные буквы не требуются. Это просто соглашение, которое позволяет легко распознать константы.