2009-04-02 4 views
0

Я пытаюсь понять, почему ... и я действительно пытаюсь понять концепцию того, что я говорю компилятору, когда я использую синтаксис IInterface. Может ли кто-нибудь объяснить это в «это то, что происходит»?Проблемы с интерфейсами C#

... Во всяком случае мой главный вопрос заключается в ....

В чем разница между

public IEnumerable<string> MyMethod() {...} 

и

public string MyMethod() : IEnumerable {...} 

Почему вы используете один над другим?

+0

Ваш второй пример недопустим. (Я предполагаю, что вы имеете в виду C# - было бы интересно пометить вопрос.) Если вы можете сделать оба примера действительными, мы расскажем вам о других отличиях. –

ответ

4
public string MyMethod() : IEnumerable {...} 

Не скомпилируйте, это одна разница.

Но вы могли бы

public class MyClass : IEnumerable<string> {...} 

И затем

public IEnumerable<string> MyMethod() 
{ 
    MyClass mc = new MyClass(); 
    return mc; 
} 
1

Когда вы говорите public IEnumerable<string> MyMethod() {...}, вы объявляете метод, который возвращает некоторый экземпляр, который реализует IEnumerable<string>. Этот экземпляр может быть массивом строки, List<string> или некоторым типом, который вы делаете.

Когда вы говорите public class MyClass : IEnumerable<string> {...}, вы объявляете тип, который реализует IEnumerable<string>. MyMethod может вернуть экземпляр MyClass.

0

первым является действительным объявление метода, до тех пор, как он живет в классе т.е.

class MyClass 
{ 
    public IEnumerable<string> MyMethod() {...} 
} 

второй не действует C# и не будет компилироваться. Это близко к декларации класса, tho.

class MyClass : IEnumerable<string> 
{ 

} 
Смежные вопросы