Java到C#:HashMap,Map和Queue

时间:2011-12-25 12:53:28

标签: c# java .net generics porting

我必须将一些代码从Java转换为C#。

private Map[] M = new HashMap[2];
private Queue[] q = new LinkedList[2];

所以,我知道我必须使用Dictionary而不是HashMap,但是我在处理.Net中的泛型时遇到了一些问题。有什么想法吗?

以下是我在init方法中的内容:

 M[0] = new HashMap<State, State>();
 M[1] = new HashMap<State, State>();
 q[0] = new LinkedList<State>();
 q[1] = new LinkedList<State>();

其中State是自定义类。

以下代码不起作用:

private Queue<State>[] q = new LinkedList<State>[2]; 

1 个答案:

答案 0 :(得分:2)

您的代码未编译,因为在Java中,Queue是类LinkedList<T>实现的接口。赋值运算符通过,因为LinkedList 队列。

在C#中Queue<T>LinkedList<T>都是类,并且都不是从另一个派生的。最终结果是你可以成功

Queue<State>[] q = new Queue<State>[2];

这可能不会给你带来任何问题,只要稍后在Java中它不会尝试将这些队列强制转换回LinkedLists或其他怪异,并且你可以将所有Java Queue方法映射到C#Queue方法

更多阅读:

http://docs.oracle.com/javase/6/docs/api/java/util/Queue.html

http://docs.oracle.com/javase/6/docs/api/java/util/LinkedList.html

http://msdn.microsoft.com/en-us/library/7977ey2c.aspx

http://msdn.microsoft.com/en-us/library/he2s3bh7.aspx