Я играл с необязательными параметрами, чтобы посмотреть, как они будут работать с интерфейсами, и натолкнулся на странное предупреждение.У меня была следующая установка:
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=
", как я и ожидал.
Мой вопрос: для чего нужно предупреждение?На какие контексты он ссылается?