Необязательные аргументы и неоднозначность

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

static void OptArgMeth(int alpha, int beta = 10, int gamma = 20)

{

Console.WriteLine("Это аргументы alpha, beta и gamma: " +

alpha + " " + beta + " " + gamma);

}

static void OptArgMeth(int alpha, double beta = 10.0, double gamma = 20.0)

{

Console.WriteLine("Это аргументы alpha, beta и gamma: " +

alpha + " " + beta + " " + gamma);

}

С учетом этих вариантов перегрузки метода OptArgMeth() следующий его вызов приводит к неоднозначности.

OptArgMeth(1); // Ошибка из-за неоднозначности!

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

Практический пример использования необязательных аргументов

//использовать необьязательный аргумент, чтобы упростить вызов метода.

using System;

class UseOptArgs

{

//вывести на экран символьную строку полнотью или частично.

static void Display(string str, int start = 0, int stop = -1)

{

if (stop < 0) stop = str.Length;

//поверить условие выхода за заданные пределы.

if (stop > str.Length | start > stop | start < 0) return;

for (int i = start; i < stop; i++) Console.Write(str[i]);

Console.WriteLine();

}

static void Main()

{

Display("это простой тест");

Display("это простой тест", 12);

Display("это простой тест", 4, 14);

}

}


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: