Предупреждение о явной реализации интерфейса с необязательными параметрамиC#

Место общения программистов C#
Ответить
Anonymous
 Предупреждение о явной реализации интерфейса с необязательными параметрами

Сообщение Anonymous »

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

Код: Выделить всё

 public interface ITestInterface
{
void TestOptional(int a = 5, int b = 10, object c = null);
}

public class TestClass : ITestInterface
{

void ITestInterface.TestOptional(int a = 5, int b = 5, object c = null)
{
Console.Write("a=" + a + " b=" + b + " c=" + c);
}
}
Компилятор выдает следующие предупреждения:
  • Значение по умолчанию, указанное для параметр «a» не будет иметь никакого эффекта, поскольку он применяется к элементу, который используется в контекстах, которые не допускают необязательных аргументов.
  • Значение по умолчанию, указанное для параметра «b», не будет иметь никакого эффекта, поскольку оно применяется к члену, который используется в контекстах, не допускающих необязательных аргументов.
  • Значение по умолчанию, указанное для параметра «c», не будет иметь никакого эффекта, поскольку оно применяется к члену, который используется в контексты, которые не допускают необязательных аргументов
Если я запущу это со следующим кодом:

Код: Выделить всё

class Program
{
static void Main(string[] args)
{
ITestInterface test = new TestClass();
test.TestOptional();
Console.ReadLine();
}
}
Я получаю результат "

Код: Выделить всё

a=5 b=10 c=
", как я и ожидал.

Мой вопрос: о чем предупреждение? К какому контексту оно относится?

Подробнее здесь: https://stackoverflow.com/questions/568 ... parameters
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»