Дополнительные параметры для интерфейсов

Используя c# 4.0 - создание интерфейса и класса, который реализует интерфейс. Я хочу объявить дополнительный параметр в интерфейсе и иметь его быть отраженным в классе. Так, у меня есть следующее:

 public interface IFoo
 {
      void Bar(int i, int j=0);
 }

 public class Foo
 {
      void Bar(int i, int j=0) { // do stuff }
 }

Это компилирует, но это не выглядит правильным. Интерфейс должен иметь дополнительные параметры, потому что иначе он не отражается правильно в подписи метода интерфейса.

Я должен пропустить дополнительный параметр и просто использовать nullable тип? Или это будет работать, как предназначено без побочных эффектов или последствий?

66
задан Ahmad Mageed 2 April 2010 в 17:14
поделиться

2 ответа

Вы могли бы рассмотреть альтернативу "pre-optional-parameters":

public interface IFoo
{
    void Bar(int i, int j);
}

public static class FooOptionalExtensions
{
    public static void Bar(this IFoo foo, int i)
    {
        foo.Bar(i, 0);
    }
}

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

29
ответ дан 24 November 2019 в 15:05
поделиться

Посмотрим в сторону, это сделает именно то, что, похоже, вы хотите сделать.

1
ответ дан 4 July 2019 в 19:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: