设置列表<customobject> = List <string> - 有脑死亡时刻</string> </customobject>

时间:2010-12-29 23:55:34

标签: c# .net list overloading variable-assignment

我确信这很容易。事实上,我确定我之前已经这样做了......

我有一类MyClass,它有2个参数TheString和SomeInt

在某个地方,在另一个课程中,我宣布了List<MyClass> MyClassListList<String> StringList

两者都有相同数量的项目。我希望这可以将MyClassList中每个MyClass中的所有“TheStrings”设置为等于StringList中相应的String

我设置MyClassList = StringList

现在我知道这不会起作用,因为它们的类型不同。我想我必须重载赋值(=)运算符,但我看不出这是怎么做的。我想我总是可以提供一种从MyClass调用的方法,但这并不是那么优雅。什么是最优雅的解决方案?

由于 托马斯

3 个答案:

答案 0 :(得分: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 :(得分:1)

没有足够的信息,但是:

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

我没有对此进行测试,但我想表现出想到的想法。

答案 2 :(得分:0)

当听起来像一个简单的for循环应该足够时,你似乎正在寻找优雅和极有可能的魔力。您已将问题描述为具有两个大小相同的列表,一个是特定类,另一个是字符串。您希望将每个类的字符串属性设置为相反列表中的相应字符串(因此可能会对这些字符串进行排序并在匹配的索引处进行排序)。你需要的只是一个循环。

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