Shashank Saxena Ответов: 3

Можно ли элемент данных в C интерфейс# тип интерфейса как ?


Может ли интерфейс в C# иметь элемент данных с типом самого интерфейса, который возможен с классами?

Например:
Класс SomeClass {
//Некоторые определенные свойства
// Метод следует следующим образом
void method1 (SomeClass var1, int var2) {
// набор инструкций, которые должны быть выполнены
}}

Здесь, о чем идет речь, я имею в виду тип параметра, передаваемого в методе класса, который имеет тот же тип, что и сам класс.

Вопрос: Итак, возможно ли это и с интерфейсом?

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

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

3 Ответов

Рейтинг:
7

CPallini

Цитата:
Например:
Класс SomeClass {
//Некоторые определенные свойства
// Метод следует следующим образом
void method1 (SomeClass var1, int var2) {
// набор инструкций, которые должны быть выполнены
}}

Здесь, о чем идет речь, я имею в виду тип параметра, передаваемого в методе класса, который имеет тот же тип, что и сам класс.

Это возможно (хотя и не то, что вы задали в названии вопроса), например
interface IMyInterface
{
  void report(IMyInterface mi);
  int id
  {
    get;
  }
}

class MyClass : IMyInterface
{
  int _id;
  public MyClass(int i) { _id = i; }
  public void report(IMyInterface mi)
  {
    Console.WriteLine("{0}", mi.id);
  }
  public int id
  {
    get { return _id; }
  }
}

class Program
{
  static void Main()
  {
    MyClass a = new MyClass(5);
    MyClass b = new MyClass(-1);
    b.report(a);
  }
}


Рейтинг:
23

OriginalGriff

Нет. Интерфейс вообще не может содержать никаких конкретных методов, только абстрактные определения, которые должны быть реализованы путем наследования классов.

Абстрактные классы могут определять конкретные методы, но интерфейсы-нет.


Graeme_Grant

Возможно, будущий C#8...

Рейтинг:
1

F-ES Sitecore

Да, это относится и к интерфейсам.