【发布时间】:2020-04-28 01:42:29
【问题描述】:
最近我在开发中进行了几个小练习。在其中一个中,我被要求在 VB .NET 中根据当前语言环境将字符串转换为数字。所以我做到了:
Imports System
Public Module Aplicacion
Public Sub Main()
Console.WriteLine(Numero("Hello World"))
Console.WriteLine(Numero(2))
Console.WriteLine(Numero(.24))
Console.WriteLine(Numero(2.4))
End Sub
Function Numero(input as String) AS Double
Try
return Convert.ToDouble(input)
Catch Ex AS Exception
return 0
End Try
End Function
End Module
老师纠正了这个问题,告诉我“虽然它有效,但正确的方法是声明一个与我要返回的类型相同的变量,在函数体中计算它的值最后返回这个变量”。
相对于像我那样直接这样做,这样做真的有什么好处吗? 也许是一些编译奖励或性能改进?
【问题讨论】:
-
但是如果性能真的很重要,你根本不应该使用异常(异常很昂贵!)。而是使用
Double.TryParse并明确传入CultureInfo.CurrentCulture来表明您尊重用户当前文化设置的意图。完全避免使用System.Convert类。 -
它“可能”会变得更糟,就像您在驾驶时“可能”通过在您的口袋里额外增加 1 公斤的重量来让您的车跑得更慢一样:这完全是微不足道的影响 这将与更重要的事情相形见绌(以此类推,比如在你的车里搭载一名 70 公斤以上的乘客)——在你的情况下,使用
TryParse而不是Convert会产生更大的影响。 -
如果您不声明和使用返回变量,VB 编译器会发出一个返回变量。这是 pre-Net VB Function 语法工作方式的产物,您将返回值分配给与函数名称相同的隐式变量;请注意,此语法仍然有效。如果您单步执行函数并将鼠标悬停在函数名称上并查看值,则可以在调试器中看到 this 的效果。
-
@MatiasBarrios - 如果您在 VB.NET 中编码,我能给您的最大提示是将
Option Strict On放在代码的顶部。它会迫使你成为一个更好的程序员。立即在您的代码上试用。 -
这与性能无关。这是关于编码风格和最佳实践的。有些人认为在方法中设置一个退出点是正确的做法。我曾经在那个营地。我从不信奉它,但随着时间的推移,我越来越倾向于尽快退出一种方法。拥有多个退出点可以减少缩进,从而提高代码的可读性。如果您的老师希望您有一个出口点并相应地标记,那么您应该为全班这样做,但要注意这不是一种正确的方法。只要符合逻辑和一致。
标签: vb.net