【发布时间】:2015-12-10 04:44:02
【问题描述】:
我有一个简单的 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 变量)
【问题讨论】:
-
C#中没有类似的方法使用TryParse,因为它可以让您轻松检查解析是否成功。 -
这只有 3 行代码。我没有看到这个问题。不是所有的东西都需要一个班轮。
-
查看调用Number.TryParseInt32 的Int32.TryParse 实现的参考源。再声明一个变量非常便宜。您是否对 C# 方法进行了内存(和/或性能)分析并发现附加声明是一个瓶颈,或者您只是在寻找微优化?给你一个不回答:不,你不能避免
int outparam,但你可以避免`= 0`。 -
即:
int outparam; Int32TryParse(input out outparam); return outparam;顺便说一句。你依赖于实现细节,如果TryParse失败,outparam将是0。这种行为有点像guaranteed,但恕我直言,这违背了试图将string解析为int的“精神”(如果无法解析,我可能不希望0作为“默认值”) . -- 更确切地说是有一个带有Nullable<int>的(内置)版本。 -
不是反对者,但“常识”声明一个变量非常便宜,这使得这是一个微/过早的优化,通常不受欢迎。此外,还有许多不好的“转换代码”问题。我不认为这是,但也许有人认为这是“联想不好”。此外,它读起来有点像“我知道如何正确地做到这一点,但我不想要正确地做到这一点,但仍能得到正确的结果。”
标签: c# vb.net int type-conversion tryparse