我有一个简单的vb方法将字符串转换为整数,它的定义如下:
Public Function getInt(input As String) As Integer
Int32.TryParse(input, getInt)
End Function
如何在c#
中使用它而不使用其他整数变量?我可以在c#中做同样的事情,如下所示:
public int getInt(string input)
{
int outParam = 0;
Int32.TryParse(input, out outParam);
return outParam;
}
是否可以避免使用额外的变量:int outParam = 0;
我尝试了Int32.TryParse(input, return);
和Int32.TryParse(input,out return);
但没有工作;
更新:当前的c#方法运行正常。我不是要求任何替代方案。只是想知道是否可以像在vb中那样自定义这个方法(避免额外声明一个int变量)
答案 0 :(得分:2)
你的VB代码正在使用VB的'功能',它允许你使用函数名'getInt'作为隐式局部变量。函数退出时返回此隐式局部变量的最后一个值。
你的C#代码是必要且正确的等价物 - 它声明了用于代替函数名的显式本地'outParam',它使用显式'return'代替VB的隐式返回。
在VB函数中赋值和返回隐藏的局部变量可能应该被认为是最好避免的遗留特征,因为它会降低清晰度。
答案 1 :(得分:0)
上面的代码实际上非常好。我不知道你为什么要在没有99.1333
的情况下这样做,但你可以这样做:
80.86669
问题是,如果字符串没有很好地解析为整数,它将抛出异常。您在上面提供的代码更具容错能力。
答案 2 :(得分:0)
您可以使用:
Int32.Parse(input);
或者:
public int getInt(string input)
{
int outParam = 0;
if (!Int32.TryParse(input, out outParam))
throw new Exception("Show message!");
return outParam;
}