Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/269.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从java到c的转换#_C#_Java - Fatal编程技术网

C# 从java到c的转换#

C# 从java到c的转换#,c#,java,C#,Java,我需要你的帮助。我正在从java转换到c#,我遇到了一个障碍。 我正在寻找java枚举类的c#等价物。我已经阅读了C#Enumeration文档,但找不到反映java版本的东西,特别是当涉及到我需要的太多方法时,这些方法就是枚举。hasMoreElements()和枚举.nextElement() 感谢您的帮助上的方法看起来与C#中的接口实现了类似的目的,但语义略有不同。例如,该方法实现了两个目的:它移动到下一个元素,并返回一个布尔值来告诉您是否有下一个要移动到的元素 但我发现,您不太可能真的需

我需要你的帮助。我正在从java转换到c#,我遇到了一个障碍。 我正在寻找java枚举类的c#等价物。我已经阅读了C#Enumeration文档,但找不到反映java版本的东西,特别是当涉及到我需要的太多方法时,这些方法就是枚举。hasMoreElements()和枚举.nextElement()

感谢您的帮助

上的方法看起来与C#中的接口实现了类似的目的,但语义略有不同。例如,该方法实现了两个目的:它移动到下一个元素,并返回一个布尔值来告诉您是否有下一个要移动到的元素

但我发现,您不太可能真的需要这个接口。你能分享更多关于你想要达到的目标的细节吗?通常可以编写比直接转换更好的C代码

更新 啊!我的眼睛!好的,这首先是过时的(或者只是做得很差的)Java代码。而不是:

    Enumeration objEnum = null;
    for (objEnum=objStructureHT.keys(); objEnum.hasMoreElements();){
        String strFieldName = (String)objEnum.nextElement();
应该是:

    for (String strFieldName : objStructureHT.keys()){
这在C#to中可以很好地翻译(假设您使用的是
字典
,用于
对象结构

    foreach (string strFieldName in objStructureHT.Keys){
但是,您获得
键的唯一原因是您可以查找每个键并获得其值,对吗?因此有一个更好的方法:

    foreach (var pair in objStructureHT){
        string strFieldName = pair.Key;
        string strDataType = pair.Value;
        ...
…这让人想知道为什么我们甚至使用
字典
而不是带有
字段名
数据类型
属性的类。但这超出了这个问题的范围

这一切都有意义吗?

基于,枚举有点不推荐使用,新的迭代器接口应该在Java中使用。另一方面,在C#中,从第一个版本开始就使用了一个名为IEnumerator的接口。后来,引入了通用IEnumerator。所有这些接口的作用都是实现

与Java版本不同,C#没有单独的hasMoreElements()和nextElement()方法,它们都统一到MoveNext()中方法,该方法在成功的迭代步骤中返回true,在没有更多元素可迭代时返回false。由于C#语言的2.0版存在关键字,它指示编译器生成接口的正确实现,对于简单情况非常有用

IEnumerator通常与接口和关键字一起使用

你可以阅读更多,而且

更新
好的,StriplingWarrior的答案结束了讨论。

您需要这个吗?我不知道枚举类在java中做什么,但我猜您正在寻找一个
IEnumerable
?发布具体的代码和您试图实现的目标。他可能指的是这个
枚举
接口:(我也必须查一下,以前从未使用过)。你不能。C#和Java不一样6下载票??你是一个苛刻的人…@chinonsoakolam在你的问题中单击“编辑”,复制粘贴代码,然后单击“保存编辑”.祝福你,祝福你,祝福你只是为了确定,我应该跳过hastable,使用字典来代替它,对吗?@ChinonsoAkolam:是的。正如Java中的
哈希表
已被弃用(你应该改用
哈希表
),C中的
哈希表
已过时(改用
字典
)。谢谢。对于给您带来的不便,请原谅,我可以问另一个问题吗。因此,看看这个函数,它们使用了一个名为objResultSet的ResultSet对象,也是ResultSet类getTimestamp的方法之一。我检查了c#alternatives,找到了DataSet、Datareader和Recordset,但它们都没有任何与getTimestamp相镜像的内容注意。你知道我如何反映这一点吗?。谢谢你。+1无论如何,感谢你努力调查和解释这一点。:-)
    foreach (var pair in objStructureHT){
        string strFieldName = pair.Key;
        string strDataType = pair.Value;
        ...