goo*_*ate 9 c# casting .net-3.0 linked-list
我有一个LinkedList,我用它来跟踪发送到这个类的连续数字.(我最终想找到丢失的数字).
我现在需要使用ranges.AddAfter(recentNode,someNewNode)方法,但我不能通过强制转换来实现.我错过了什么?
class ContiguousData
{
LinkedList<ContiguousDataValue> ranges = new LinkedList<ContiguousDataValue>();
public void AddValue(int val)
{
LinkedListNode<ContiguousDataValue> recentNode = null;
foreach (var range in ranges)
{
if (val > range.UpperInt)
{
if (val == range.UpperInt + 1)
range.UpperInt = val;
else
{
if (recentNode == null)
ranges.AddFirst(new ContiguousDataValue() { UpperInt = val, LowerInt = val });
else
ranges.AddAfter(recentNode, new ContiguousDataValue() { UpperInt = val, LowerInt = val });
}
break;
}
else if (val < range.LowerInt)
{
if (val == range.LowerInt - 1)
range.LowerInt = val;
else
{
// do more logic (incomplete)
}
}
// Compiler error
recentNode = (LinkedListNode<ContiguousDataValue>)range;
}
if (ranges.Count == 0)
{
ranges.AddFirst(new ContiguousDataValue() { UpperInt = val, LowerInt = val });
return;
}
}
internal class ContiguousDataValue
{
public int UpperInt { get; set; }
public int LowerInt { get; set; }
}
}
Run Code Online (Sandbox Code Playgroud)
由于转换不起作用,我该如何转换range为LinkedListNode<T>?
lep*_*pie 11
我想你在找;
var ranges = new LinkedList<ContiguousDataValue>();
for (var recentNode = ranges.First;
recentNode != null;
recentNode = recentNode.Next)
{
var range = recentNode.Value;
ranges.AddAfter(recentNode,someNewNode);
}
Run Code Online (Sandbox Code Playgroud)