我需要一些澄清。这两种方法是相同还是不同?我对于根据值传入参数的对象的引用何时更新以及何时创建新参数有点困惑。我知道这个任务是否会创建一个新的参考,但是如何更改一个属性呢?这两种方法是否会以同样的方式更新字段“_someObjectList”?快速问题:C#Linq“单”语句与“for”循环
public class SomeObject{
public Guid UniqueKey { get; set; }
public object SomeProperty{ get; set; }
}
public class SomeObjectListWrapper{
public SomeObjectListWrapper(List<SomeObject> someObjectList){
_someObjectList = someObjectList;
}
private readonly List<SomeObject> _someObjectList;
public void ReplaceItemPropertyValue1(Guid itemUniqueKey, object propertyValue)
{
List<int> resultIndices = new List<int>();
for (var i = 0; i < _someObjectList.Count(); i++)
{
if (_someObjectList[i].UniqueKey == itemUniqueKey)
resultIndices.Add(i);
}
if (resultIndices.Count != 1)
throw new Exception(
"just pretend this is the same exception as Single() throws when it can't find anything");
_someObjectList[resultIndices[0]].SomeProperty = propertyValue;
}
public void ReplaceItemPropertyValue2(Guid itemUniqueKey, object propertyValue)
{
_someObjectList.Single(x=>x.UniqueKey==itemUniqueKey).SomeProperty=propertyValue;
}
}
我编辑了发布的代码,我认为它现在应该反映Single()而不是First()。请指教。感谢您的帮助。 如果您有时间可以请解释或提供关于您的评论的链接(如果SomeObject是一个结构体)。当我问这个时,我有Dictionary类(我相信从ICollection>派生出来)。 再次感谢。 –
smartcaveman
2010-10-03 06:12:14
答案在http://stackoverflow.com/questions/2414906/what-are-the-differences-between-value-types-and-reference-types-in-c/2414954#2414954简要解释了这种差异。 (请注意,问题中给出的'答案'的第一部分是错误的。)'Dictionary'可能是你想要的,而不是'List '。 –
Zooba
2010-10-03 07:57:37