日期:2014-05-18  浏览次数:20710 次

无法向Queue<T>添加数据
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()更名的话都已能正常把数据加入队列,奇了怪了。

------解决方案--------------------
为什么要从写tostring呢?
Queue <string> _s = new Queue <string>(); 
public void Add(string s) 

_s.Enqueue(s); //无法将s加入队列 


string value=q.Dequeue();这样就使里面的 内容了?为什么从写?



------解决方案--------------------
我测试,正常的

 public override string ToString()
------解决方案--------------------
ToString 是基类的方法

探讨
我测试,正常的

public override string ToString()

------解决方案--------------------
using System;
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
------解决方案--------------------
看到你的类后,自己做了测试,没有任何的问题啊。
------解决方案--------------------
很简单,那个泛型的定义是object.ToString()实现的。。。。
可能。。。
嘿嘿。
------解决方案--------------------
....你的代码我这里没问题
没有你出现的情况..
------解决方案--------------------
探讨
引用:
....你的代码我这里没问题
没有你出现的情况..


太妖了
太妖了
太妖了
太妖了
太妖了
太妖了
乱世必出妖孽啊

------解决方案--------------------
3 楼已经给你正解了。 把 new 关键词换成 override
------解决方案--------------------
你要找到这个类里面定义的Tostring