VB.NET中文字类型字符(https://msdn.microsoft.com/en-us/library/s9cz43ek.aspx)的使用是不是旧的学校风格?我和一位愚蠢的同事讨论过这个问题,结果是“这是旧风格,我不想再看了!”。
我的背景是技术和硬件相关的,我总是喜欢类型严格编程的优点,但我真的想到了OOP / VB世界的优点和缺点。有些人可以帮助我列出优点/缺点吗?
[更新]示例用法:
Dim i as Integer = 0I
Dim d as Decimal = 2.4D
答案 0 :(得分:1)
我从未见过"标识符类型字符"所以我个人永远不会用它。我已经看过"字面型字符"和" Hexadecimal / Oct"通常,我不会在需要时看到使用它们的任何问题,或者是否有助于其他人阅读您的代码。
这有点无趣
<select ng-model="parent_id" ng-options="project.gid as project.groupingName for project in projects track by $index"></select>
但这需要
Dim i as Integer = 0I
遵循该组的编码标准也很重要。
答案 1 :(得分:1)
我们在这里有两个不同的功能:
类型字符是向后兼容的传统功能。有很多人(包括我自己)认为应该避免使用它们,但它是一种完全支持的语言功能(不标记为已弃用),所以#&# 39; s基本上是偏好和编码风格的问题。
Dim myString$ ' old style
Dim myString As String ' new style
请注意,在这里,&#34;旧式&#34;意味着&#34; 非常旧样式&#34 ;:甚至QuickBasic,Visual Basic的DOS前身,已经支持&#34;新样式&#34;。
另一方面,文字类型字符可让您指定文字的类型。这是一个有用的功能:
' I explicitly want the first parameter to be a decimal, not a double.
' Without the type character, the assertion would fail.
Assert.AreEqual(3.0D, SomeMethodReturningADecimal())
或
myArray = myString.Split(";"c) ' ";"c is a character, not a string.
如果没有文字类型字符,我们需要使用CDec(3.0)
和CChar(";")
,即我们需要在运行时转换这些值。
在您的问题(变量初始化)中提到的示例中,仅在
时才需要输入文字换句话说,以下三个语句产生完全相同的IL:
Dim s As Single = 1
Dim s As Single = 1.0F
Dim s = 1.0F
请注意C#也有文字类型字符:
var myDecimal = 3.0m; // This is a decimal, not a double.