C # Выбор по умолчанию необязательный параметр - PullRequest
1 голос
/ 13 июля 2010
    public ClassType(string type) {
        Type = type;
    }
    public ClassType(string type,bool isArray=false) {
        Type = type;
        IsArray = isArray;
    }


    ClassType ct = new ClassType("adsf");

Какой конструктор выбран?

Ответы [ 2 ]

7 голосов
/ 13 июля 2010

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

Из раздела 7.5.3.2 спецификации C # 4:

В противном случае, если все параметры M P имеют соответствующий аргумент, тогда как аргументы по умолчанию должны быть заменить по крайней мере один необязательный параметр в M Q , тогда M P лучше, чем M Q .

1 голос
/ 13 июля 2010

Как сказал Джон, в двух словах, первое.Матч «чище».

...