我在C#中的代码有问题.如果我单击编译器按钮,我会收到以下错误
'
System.Collections.Generic.LinkedList<int?>'不包含'removeFirst'的定义,并且没有扩展方法'removeFirst'接受类型'System.Collections.Generic.LinkedList<int?>' 的第一个参数可以找到(你是否缺少using指令或汇编引用?).
和
'
System.Collections.Generic.LinkedList<Hanoi_tower.Sol>'不包含'addLast'的定义,并且没有扩展方法'addLast'接受类型'System.Collections.Generic.LinkedList<Hanoi_tower.Sol>' 的第一个参数可以找到(你是否缺少using指令或汇编引用?)
这是我的计划
using System.;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Hanoi_tower
{
public class Sol
{
public LinkedList<int?> tower1 = new LinkedList<int?>();
public LinkedList<int?> tower2 =new LinkedList<int?>();
public LinkedList<int?> tower3 =new LinkedList<int?>();
public int depth;
public LinkedList<Sol> neighbors;
public Sol(LinkedList<int?> tower1, LinkedList<int?> tower2, LinkedList<int?> tower3)
{
this.tower1 = tower1;
this.tower2 = tower2;
this.tower3 = tower3;
neighbors = new LinkedList<Sol>();
}
public virtual void getneighbors()
{
Sol temp = this.copy();
Sol neighbor1 = this.copy();
Sol neighbor2 = this.copy();
Sol neighbor3 = this.copy();
Sol neighbor4 = this.copy();
Sol neighbor5 = this.copy();
Sol neighbor6 = this.copy();
if (temp.tower1.Count != 0)
{
if (neighbor1.tower2.Count != 0)
{
if (neighbor1.tower1.First.Value < neighbor1.tower2.First.Value)
{
neighbor1.tower2.AddFirst(neighbor1.tower1.RemoveFirst);
neighbors.AddLast(neighbor1);
}
}
else
{
neighbor1.tower2.AddFirst(neighbor1.tower1.RemoveFirst());
neighbors.AddLast(neighbor1);
}
if (neighbor2.tower3.Count != 0)
{
if (neighbor2.tower1.First.Value < neighbor2.tower3.First.Value)
{
neighbor2.tower3.AddFirst(neighbor2.tower1.RemoveFirst());
neighbors.AddLast(neighbor2);
}
}
else
{
neighbor2.tower3.AddFirst(neighbor2.tower1.RemoveFirst());
neighbors.AddLast(neighbor2);
}
}
//-------------
if (temp.tower2.Count != 0)
{
if (neighbor3.tower1.Count != 0)
{
if (neighbor3.tower2.First.Value < neighbor3.tower1.First.Value)
{
neighbor3.tower1.AddFirst(neighbor3.tower2.RemoveFirst());
neighbors.AddLast(neighbor3);
}
}
else
{
neighbor3.tower1.AddFirst(neighbor3.tower2.RemoveFirst());
neighbors.AddLast(neighbor3);
}
if (neighbor4.tower3.Count != 0)
{
if (neighbor4.tower2.First.Value < neighbor4.tower3.First.Value)
{
neighbor4.tower3.AddFirst(neighbor4.tower2.RemoveFirst());
neighbors.AddLast(neighbor4);
}
}
else
{
neighbor4.tower3.AddFirst(neighbor4.tower2.RemoveFirst());
neighbors.AddLast(neighbor4);
}
}
//------------------------
if (temp.tower3.Count() != 0)
{
if (neighbor5.tower1.Count() != 0)
{
if(neighbor5.tower3.ElementAtOrDefault() < neighbor5.tower1.ElementAtOrDefault())
{
neighbor5.tower1.AddFirst(neighbor5.tower3.RemoveFirst());
neighbors.AddLast(neighbor5);
}
}
else
{
neighbor5.tower1.AddFirst(neighbor5.tower3.RemoveFirst());
neighbors.AddLast(neighbor5);
}
if (neighbor6.tower2.Count() != 0)
{
if(neighbor6.tower3.element() < neighbor6.tower2.element())
{
neighbor6.tower2.addFirst(neighbor6.tower3.removeFirst());
neighbors.addLast(neighbor6);
}
}
else
{
neighbor6.tower2.addFirst(neighbor6.tower3.removeFirst());
neighbors.addLast(neighbor6);
}
}
}
public override string ToString()
{
string str;
str="tower1"+ tower1.ToString() + " tower2" + tower2.ToString() + " tower3" + tower3.ToString();
return str;
}
public Sol copy()
{
Sol So;
LinkedList<int> l1= new LinkedList<int>();
LinkedList<int> l2=new LinkedList<int>();
LinkedList<int> l3 = new LinkedList<int>();
for(int i=0;i<=this.tower1.Count() -1;i++)
{
l1.AddLast(tower1.get(i));
}
for(int i=0;i<=this.tower2.size()-1;i++)
{
l2.addLast(tower2.get(i));
}
for(int i=0;i<=this.tower3.size()-1;i++)
{
l3.addLast(tower3.get(i));
}
So = new Sol(l1, l2, l3);
return So;
}
public bool Equals(Sol sol)
{
if (this.tower1.Equals(sol.tower1) & this.tower2.Equals(sol.tower2) & this.tower3.Equals(sol.tower3))
return true;
return false;
}
public virtual bool containedin(Stack<Sol> vec)
{
bool found =false;
for(int i=0;i<= vec.Count-1;i++)
{
if(vec.get(i).tower1.Equals(this.tower1) && vec.get(i).tower2.Equals(this.tower2) && vec.get(i).tower3.Equals(this.tower3))
{
found=true;
break;
}
}
return found;
}
}
}
Run Code Online (Sandbox Code Playgroud)
C#区分大小写.正确的方法名称是RemoveFirst和AddLast,大写R和A.
所有.NET方法和属性都在Pascal大小写中完成,其中每个单词的首字母大写.
看起来你需要正确地大写:RemoveFirst和AddLast
这里是LinkedList所有方法的链接:http://msdn.microsoft.com/en-us/library/h64606bk(v = VS.100) .aspx
| 归档时间: |
|
| 查看次数: |
1302 次 |
| 最近记录: |