RaunakGupta Ответов: 5

Кто-нибудь пытался использовать функцию параметров по умолчанию?


если у меня есть два метода
void method(string str="")
{
//logic
}

void method()
{
//logic
}

and i am calling it

void main()
{
method()
}

какой из них называется?

Что я уже пробовал:

вопрос интервью, который задается, дает ли он какую-либо ошибку во время выполнения или во время компиляции?

Bernhard Hiller

Почему бы вам просто не открыть VS и не вставить туда этот код?

johannesnestler

интересный вопрос, но зачем задавать его здесь? - что вы делаете во время работы по программированию, Если не знаете: попробуйте! или прочитайте MSDN: https://msdn.microsoft.com/en-us/library/dd264739.aspx (взгляните на "разрешение перегрузки" в нижней части страницы)

5 Ответов

Рейтинг:
2

RaunakGupta

да, я попробовал это сделать и получил ответ. это простой механизм перегрузки, и C# complier сначала вызывает параметр less mathode. это не даст никакой ошибки. работать отлично.
спасибо


Рейтинг:
1

Karthik_Mahalingam

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

using System;

class Program
{

    static void Main()
    {
        method();
        Console.ReadLine();
    }

    static void method(string str = "")
    {
        Console.WriteLine("method(string str = \"\")");

    }

    static void method()
    {
        Console.WriteLine("method()");
    }
}


CPallini

5. экспериментальные данные :-)

Karthik_Mahalingam

Спасибо CPallini :)

Рейтинг:
1

#realJSOP

Если вы проходите собеседование на работу программиста, и вам никогда не приходило в голову попробовать это самостоятельно и посмотреть, действительно ли вы думаете, что выбрали подходящий карьерный путь?


Рейтинг:
1

Member 12802753

метод "неоднозначен"
Кандидаты есть:
метод Void ()
Void метод(с std::__cxx11::элементах&ЛТ;шар,с std::char_traits&ЛТ;чар&ГТ; и std::распределитель&ЛТ;чар&ГТ;&ГТ;)
'


#realJSOP

Это вопрос на языке C#, а не на языке C++. Ваш ответ не имеет значения.

Рейтинг:
0

johannesnestler

Итак, кто-нибудь знает способ принудительного использования метода с параметром по умолчанию?

Я думал о решении со специальным делегатом для этого случая - но это работает не так, как я сначала подумал: посмотрите, как это ведет себя...


class Program
 {
     delegate void methodDelegate(string str = "ABC");

     static void Main()
     {
         method();
         methodDelegate methodWithOptionalParameter = method;
         methodWithOptionalParameter.Invoke();

         Console.ReadKey();
     }

     static void method(string str = "XYZ")
     {
         Console.WriteLine("method(string str = \"{0}\")", str);

     }

     static void method()
     {
         Console.WriteLine("method()");
     }

 }


(подсказка: он использует значение по умолчанию из определения делегата)