我确信这很容易。事实上,我确定我之前已经这样做了......
我有一类MyClass,它有2个参数TheString和SomeInt
在某个地方,在另一个课程中,我宣布了List<MyClass> MyClassList
和List<String> StringList
两者都有相同数量的项目。我希望这可以将MyClassList中每个MyClass中的所有“TheStrings”设置为等于StringList中相应的String
我设置MyClassList = StringList
现在我知道这不会起作用,因为它们的类型不同。我想我必须重载赋值(=)运算符,但我看不出这是怎么做的。我想我总是可以提供一种从MyClass调用的方法,但这并不是那么优雅。什么是最优雅的解决方案?
由于 托马斯
答案 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];
}