VB.NET使用字面型字符坏样式的优点

时间:2016-09-09 14:05:42

标签: vb.net types

VB.NET中文字类型字符(https://msdn.microsoft.com/en-us/library/s9cz43ek.aspx)的使用是不是旧的学校风格?我和一位愚蠢的同事讨论过这个问题,结果是“这是旧风格,我不想再看了!”。

我的背景是技术和硬件相关的,我总是喜欢类型严格编程的优点,但我真的想到了OOP / VB世界的优点和缺点。有些人可以帮助我列出优点/缺点吗?

[更新]示例用法:

Dim i as Integer = 0I
Dim d as Decimal = 2.4D

2 个答案:

答案 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.