从java转换为C# [英] Converting from java to C#
问题描述
大家好,我需要你的帮助。我正在从java转换为c#,我遇到了障碍。
我正在寻找一个与java Enumeration类相当的c#。我已经浏览了C#枚举文档,但是我无法找到镜像java版本的东西,特别是当涉及到我需要的方法时,这些都是Enumeration。 hasMoreElements()和Enumeration.nextElement()。
protected boolean populateResultSetDataToRRX(Hashtable objStructureHT, String strObjectNam, String strMultiUserCheck)
{
try
{
Enumeration objEnum = null;
for (objEnum = objStructureHT.keys(); objEnum.hasMoreElements();)
{
String strFieldName =( String )objEnum.nextElement();
String strBindFieldName = extractBindField(strFieldName).toUpperCase();
String strDataType =( String )objStructureHT.get(strFieldName);
字符串 strFieldValue = ;
if (strDataType.equals( date) ))
{
if (objResultSet.getTimestamp(strBindFieldName)== null)
strFieldValue = ;
else
strFieldValue = objResultSet.getTimestamp(strBindFieldName).toString();
} else {
strFieldValue = objResultSet.getString(strBindFieldName);
}
if (!populateRRXField(strObjectName,strFieldName,strFieldValue,strDataType))
{
return false;
}
} // objEnum的结尾hasNoMoreElements
< span class =code-keyword> if (strMultiUserCheck.equalsIgnoreCase( Token ))
{
objRRX.addField(strObjectName, Token,objResultSet .getString( 令牌));
}
objRRX.addField(strObjectName, 选中, N);
objRRX.assignErrorStatus(strObjectName,strStatus, SUCCESS);
返回 true;
}
catch (例外e)
{
System.out.println( populateResultSetDataToRRX中的异常 + e.getMessage());
return false;
}
} // 函数结束populateResultSetDataToRRX
因此在一些上下文中使用此代码,查看forloop,.hasmoreElement()并查看forloop之后的第一行,.nextElement() ;
感谢您的帮助。
试试< a href =http://msdn.microsoft.com/en-us/library/system.enum.getvalues.aspx> Enum.GetValues
方法 [ ^ ]。
真正的问题是,与Java和其他一些技术相比,.NET枚举不会枚举。尽管解决方案1提供了解决方案,但它并不全面。当您对不同的枚举成员使用相同的整数值时会出现一些问题,另一个问题是遍历时的排序。
我在CodeProject文章中提供了一个全面的解决方法: 枚举类型不会枚举!解决.NET和语言限制 [ ^ ]。
请参阅。我还展示了一些有用的枚举技术,它们不需要我的代码。
-SA
这是你的代码。使用转换器转换时可能会有一些错误。
使用系统;
使用 System.Collections;
受保护 内部 虚拟 bool populateResultSetDataToRRX(Hashtable objStructureHT, string strObjectNam, string strMultiUserCheck)
{
try
{
Enumeration objEnum = 空跨度>;
for (objEnum = objStructureHT.Keys; objEnum.hasMoreElements();)
{
string strFieldName =( string )objEnum.nextElement();
string strBindFieldName = extractBindField(strFieldName).ToUpper();
string strDataType =( string )objStructureHT [strFieldName];
string strFieldValue = ;
if (strDataType.Equals( date) ))
{
if (objResultSet.getTimestamp(strBindFieldName)== null )
strFieldValue = ;
else
strFieldValue = objResultSet.getTimestamp(strBindFieldName).ToString();
}
else
{
strFieldValue = objResultSet.getString(strBindFieldName);
}
if (!populateRRXField(strObjectName,strFieldName,strFieldValue,strDataType))
{
返回 false ;
}
} // objEnum的结尾hasNoMoreElements
< span class =code-keyword> if (strMultiUserCheck.equalsIgnoreCase( Token ))
{
objRRX.addField(strObjectName, Token,objResultSet .getString( 令牌));
}
objRRX.addField(strObjectName, 选中, N);
objRRX.assignErrorStatus(strObjectName,strStatus, SUCCESS);
return true ;
}
catch (例外e)
{
Console.WriteLine( populateResultSetDataToRRX中的异常 + e.getMessage());
return false ;
}
} // 函数结束populateResultSetDataToRRX
Hello guys, I need your help. I am converting from java to c# and I have run into a roadblock.
I am looking for a c# equivalent of the java Enumeration class. I have gone through the C# Enumeration documentation and I wasn't able to find something that mirror the java version, especially when it came to too methods that I need and these are the Enumeration. hasMoreElements() and the Enumeration.nextElement().
protected boolean populateResultSetDataToRRX(Hashtable objStructureHT,String strObjectNam ,String strMultiUserCheck)
{
try
{
Enumeration objEnum = null;
for(objEnum=objStructureHT.keys(); objEnum.hasMoreElements();)
{
String strFieldName = (String)objEnum.nextElement();
String strBindFieldName=extractBindField(strFieldName).toUpperCase();
String strDataType = (String)objStructureHT.get(strFieldName);
String strFieldValue="";
if(strDataType.equals("date"))
{
if(objResultSet.getTimestamp(strBindFieldName)==null)
strFieldValue="";
else
strFieldValue = objResultSet.getTimestamp(strBindFieldName).toString();
}else {
strFieldValue = objResultSet.getString(strBindFieldName);
}
if(!populateRRXField(strObjectName,strFieldName,strFieldValue,strDataType))
{
return false;
}
}// end of for objEnum hasNoMoreElements
if (strMultiUserCheck.equalsIgnoreCase("Token"))
{
objRRX.addField(strObjectName,"Token", objResultSet.getString("Token"));
}
objRRX.addField(strObjectName,"selected","N");
objRRX.assignErrorStatus(strObjectName, strStatus, "SUCCESS");
return true;
}
catch(Exception e)
{
System.out.println("Exception in populateResultSetDataToRRX " + e.getMessage());
return false;
}
}// end of function populateResultSetDataToRRX
So using this code for some context, looking at the forloop, the .hasmoreElement() and looking at the first line after the forloop, the .nextElement();
Thanks for your help.
Try the Enum.GetValues
Method[^].
The real problem is that .NET enumerations do not enumerate, in contrast to Java and some other technologies. Even though Solution 1 provides a work-around, it is not comprehensive. Some problems starts when you use the same integer value for different enumeration members, another problem is ordering while traversing.
I have created a comprehensive workaround provided in my CodeProject article: Enumeration Types do not Enumerate! Working around .NET and Language Limitations[^].
Please see. I also show some useful enumeration techniques which don't require my code.
—SA
Here's your code. Might have some mistakes as it is converted using a converter.
using System; using System.Collections; protected internal virtual bool populateResultSetDataToRRX(Hashtable objStructureHT, string strObjectNam, string strMultiUserCheck) { try { Enumeration objEnum = null; for(objEnum=objStructureHT.Keys; objEnum.hasMoreElements();) { string strFieldName = (string)objEnum.nextElement(); string strBindFieldName =extractBindField(strFieldName).ToUpper(); string strDataType = (string)objStructureHT[strFieldName]; string strFieldValue =""; if(strDataType.Equals("date")) { if(objResultSet.getTimestamp(strBindFieldName)==null) strFieldValue=""; else strFieldValue = objResultSet.getTimestamp(strBindFieldName).ToString(); } else { strFieldValue = objResultSet.getString(strBindFieldName); } if(!populateRRXField(strObjectName,strFieldName,strFieldValue,strDataType)) { return false; } } // end of for objEnum hasNoMoreElements if (strMultiUserCheck.equalsIgnoreCase("Token")) { objRRX.addField(strObjectName,"Token", objResultSet.getString("Token")); } objRRX.addField(strObjectName,"selected","N"); objRRX.assignErrorStatus(strObjectName, strStatus, "SUCCESS"); return true; } catch(Exception e) { Console.WriteLine("Exception in populateResultSetDataToRRX " + e.getMessage()); return false; } } // end of function populateResultSetDataToRRX
这篇关于从java转换为C#的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!