2016-04-10 13 views
5

大きな難しさがあります。私は答えたい質問があります:MyClassが正しいためにはどのような機能が必要ですか?匿名の種類(クラスの機能)

var myVariable = new MyClass { 25 }; 

私は金曜日から回答を見つけようとしましたが、まだ結果がありません。あなたはそれについて何か考えましたか?

答えて

5

二つのクラスのニーズは、その構文の資格を得るためにあります。

  • それはIEnumerable(またはIEnumerableを意味し、いくつかの他のインターフェイスを実装する必要がある - それは、ベースから継承できIEnumerableを実装するクラス)
  • それはint
012を受信することができる Add(...)方法を実施するために必要次のクラス宣言のいずれかだろう

public class MyClass1 : IEnumerable 
{ 
    public void Add(int i) { } 
    public IEnumerator GetEnumerator() => null; 
} 

public class MyClass2 : IEnumerable 
{ 
    public void Add(double i) { } 
    public IEnumerator GetEnumerator() => null; 
} 

public class MyClass3 : IEnumerable 
{ 
    public void Add(object i) { } 
    public IEnumerator GetEnumerator() => null; 
} 

より多くの種類が同様にあり、コンパイラが自動的にint値をキャストすることができ、上記のはわずか3異なる例です。

2

Add(int)の方法が必要です。これはコレクション初期化子です。 Listこれが好きですか?

var myVariable = new List<int> { 25 };