从java转换为C# [英] Converting from java to C#

查看:77
本文介绍了从java转换为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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆