vs2005 .net2.0
如下代码class Test
{
Queue<string> _s = new Queue<string>();
public void Add(string s)
{
_s.Enqueue(s); //无法将s加入队列
}
public new string ToString()
{
if(_s.Count>0)
return _s.Dequeue();
return null;
}
}问题就出在ToString()中引用了_s,如果ToString()中不调用_s,或者把ToString()更名的话都已能正常把数据加入队列,奇了怪了。
如下代码class Test
{
Queue<string> _s = new Queue<string>();
public void Add(string s)
{
_s.Enqueue(s); //无法将s加入队列
}
public new string ToString()
{
if(_s.Count>0)
return _s.Dequeue();
return null;
}
}问题就出在ToString()中引用了_s,如果ToString()中不调用_s,或者把ToString()更名的话都已能正常把数据加入队列,奇了怪了。
Queue <string> _s = new Queue <string>();
public void Add(string s)
{
_s.Enqueue(s); //无法将s加入队列
} string value=q.Dequeue();这样就使里面的 内容了?为什么从写?
我就是想搞清楚,为什么用ToString()就不行
using System.Collections.Generic;
class Test
{
Queue <string> _s = new Queue <string>();
public void Add(string s)
{
_s.Enqueue(s); //无法将s加入队列
}
public new string ToString()
{
if(_s.Count>0)
return _s.Dequeue();
return null;
}
public static void Main()
{
Test t = new Test();
t.Add("this");
Console.WriteLine(t.ToString());
}
} 运行正常
SDK 2.0
可能
嘿嘿。
{
public string Joint;
public string Condition;
public ConditionPair(string joint, string condition)
{
this.Joint = joint;
this.Condition = condition;
}
} public class ConditionBuilder
{
private Queue<ConditionPair> _conditionPairQueue = new Queue<ConditionPair>(); public void Add(string joint, string condition)
{
if (condition != null && joint != null)
{
_conditionPairQueue.Enqueue(new ConditionPair(joint, condition));//队列Count为1,但是里面的数组是null
}//跟踪到这里count又变成0了
} public new string ToString() //不管是new还是override都不行,只要改个函数名就可以了,太妖了
{
int queueSize = _conditionPairQueue.Count;
if (queueSize == 0)
{
return null;
}
StringBuilder sb = new StringBuilder();
sb.Append(_conditionPairQueue.Dequeue().Condition);
bool isPreviousJointOR = false;
for (int i = 1; i < queueSize; i++)
{
ConditionPair conditionPair = _conditionPairQueue.Dequeue();
if (isPreviousJointOR)
{
sb.Insert(0, '(');
sb.Append(')');
}
sb.Append(' ');
sb.Append(conditionPair.Joint);
sb.Append(' ');
sb.Append(conditionPair.Condition);
isPreviousJointOR = conditionPair.Joint.ToLower() == "or";
}
return sb.ToString();
}
}
framework的源代码哪里有?我想看看Queue的实现