2010-12-29 16 views
0

これは簡単だと確信しています。 Infactは私は別のクラスでは、私はList<MyClass> MyClassListList<String> StringList設定リスト<CustomObject> =リスト<String> - 脳死勢を持つ

を宣言し、私はTheString 2つのパラメータとSomeInt

どこかに持っているのMyClassのクラスを持って、私は...前

これをやったと確信しています

どちらも同じ数のアイテムを持っています。私は、彼らがさまざまなタイプだから今私は、この文句を言わない仕事を知っているMyClassList = StringList

を設定し、これはSTRINGLIST

から対応する文字列に等しいMyClassListから各MyClassの中のすべての「TheStrings」を設定したいです。私は代入(=)演算子をオーバーロードしなければならないと思いますが、これがどのように行われているのか分かりません。私はいつもMyClassから呼び出すメソッドを提供することができると思いますが、それほどエレガントではありません。最も洗練されたソリューションは何でしょうか?

おかげ トーマス

答えて

3

あなたは=演算子をオーバーロードすることはできません。あなたは、MSDNからの例を暗黙の型変換を行うことができます:

public static implicit operator double(Digit d) 
{ 
    return d.val; 
} 

しかしリストの場合、私は最善の解決策は、LINQを使用することであると思う:

どこにも十分な情報に近い
List<MyClass> list = (from value in StringList 
        select new MyClass { TheString = value }).ToList(); 
1

、しかし:

var customObjects = new List<CustomObject>(TheStringList.Select(s => new CustomObject { TheString = s })); 

私はこれをテストしませんでしたが、私は思いついた考えを示したかったのです。

0

単純なforというループのように聞こえたら、エレガントで魔法が欲しいと思うようです。あなたは、同じクラスの2つのリスト、特定のクラスのリスト、別の文字列のリストを持つことで問題を説明しました。各クラスの文字列プロパティを、反対のリストの対応する文字列に設定する必要があります(おそらくこれらはソートされ、一致するインデックスにあります)。必要なのはループだけです。

for (int index = 0; index = MyClassList.Count; index++) 
{ 
    MyClassList[index].TheString = StringList[index]; 
} 
+0

私はそれを知っています。結局私はやった。どうやらC#で代入演算子をオーバーロードすることはできません!私はMyClassList.ForEach(item => {...})に行きました。ちょうどふくらんで感じる:( – Prof

関連する問題