2009-04-02 3 views
0

J'essaie de comprendre le «pourquoi» de cela ... et j'ai vraiment du mal à saisir le concept de ce que je demande au compilateur de faire quand j'utilise une syntaxe IInterface. Quelqu'un peut-il expliquer dans un "c'est ce qui se passe" manière?Avoir des problèmes dans les interfaces C#

... Quoi qu'il en soit ma principale question est ....

Quelle est la différence entre

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

et

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

Pourquoi voudriez-vous utiliser un sur l'autre?

+0

Votre second exemple n'est pas un code valide. (Je suppose que vous voulez dire C# - cela vaudrait la peine de poser la question.) Si vous pouvez rendre les deux exemples valides, nous vous dirons les différences restantes. –

Répondre

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

Ne compilera pas, c'est une différence.

Mais vous pourriez avoir

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

Et puis

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

Quand vous dites public IEnumerable<string> MyMethod() {...}, vous déclarez une méthode qui renvoie une instance qui implémente IEnumerable<string>. Cette instance peut être un tableau de chaînes, un List<string> ou un type que vous créez.

Lorsque vous dites public class MyClass : IEnumerable<string> {...}, vous déclarez un type qui implémente IEnumerable<string>. Une instance de MyClass peut être renvoyée par MyMethod.

0

la première est une déclaration de méthode valable, tant qu'il vit dans une classe -à-dire

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

le second est pas valide C# et ne compilera pas. Il est proche d'une déclaration de classe, tho.

class MyClass : IEnumerable<string> 
{ 

} 
Questions connexes