Именованные параметры, используемые вне класса

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

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

object.myFunc(SPECIAL_VALUE);

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

Спасибо,


person Colton Fairley    schedule 01.04.2016    source источник
comment
Возможный дубликат: Как определить именованные параметры C#   -  person Aly Elhaddad    schedule 01.04.2016
comment
Использование таких идентификаторов с заглавной буквы является соглашением языка C. C# не имеет препроцессора, позволяющего определять значения. Используйте константу, переменную только для чтения или перечисление. Избегайте поиска одного имени для этих трех совершенно разных типов идентификаторов.   -  person Hans Passant    schedule 02.04.2016
comment
Вы говорите о значениях по умолчанию для таких параметров, как f(int x=1), которые используются, когда именованные параметры не указаны?   -  person John Alexiou    schedule 02.04.2016


Ответы (3)


Обычно такие константы в С# объявляются и обрабатываются следующим образом...

public const String MyConstantThingHere = "Some value";

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

public static final String MY_CONSTANT_THING_HERE = "Some value";

Я бы просто назвал эти константы общедоступного класса. См. ЗДЕСЬ.

Также для справки: http://www.dofactory.com/reference/csharp-coding-standards

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

См. здесь: статический импорт в С#

person ManoDestra    schedule 01.04.2016
comment
Это работает в C#, если я скажу... Object.Property = Class.MY_CONSTANT; Есть ли способ не использовать Class. - person Colton Fairley; 01.04.2016
comment
Да, используйте статический импорт. Я обновил свой ответ соответственно :) - person ManoDestra; 01.04.2016

Я не совсем уверен, что вы имеете в виду. Концепция именованных параметров в 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: для значения 1 установлено значение «1», для значения 3 установлено значение «1», значение 2 отсутствует и поэтому заполнено значением по умолчанию «4».

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

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();
        }
    }
}

Вывод консоли:

Now I got it.
person termigrator    schedule 01.04.2016

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

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

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

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

const int NUMBER_OF_ITEMS_TO_DISPLAY = 4

or

const string MAX_INPUT_LENGTH_SETTINGS_KEY = "maximumInputLength"

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

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

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

person Scott Hannen    schedule 01.04.2016