2009-04-02 13 views
0

私はこのことを理解しようとしています... IInterface構文を使用するときにコンパイラに何を行うべきかという概念を理解するのは本当に苦労しています。誰も "これは何が起こっているの"方法でそれを説明することはできますか?とにかくC#インターフェイスで問題が発生しました

...私のメインの質問です....

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

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

なぜあなたは他の上で1つを使用するの違いは何ですか?

+0

2番目の例は有効なコードではありません。 (私はあなたがC#を使用していると仮定しています。質問にタグを付ける価値があります)。両方の例を有効にすることができれば、残りの違いを教えてくれます。 –

答えて

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

コンパイルされませんが、それは1つの違いです。

しかし、あなたは

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>を実装する型を宣言しています。 MyClassのインスタンスは、MyMethodによって返される可能性があります。

0

最初は、それが

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

すなわちクラス に住んでいるように、第2は、有効なC#ではなく、コンパイルされません、有効なメソッドの宣言です。クラス宣言に近いです。

class MyClass : IEnumerable<string> 
{ 

} 
関連する問題