【发布时间】:2013-06-04 23:28:36
【问题描述】:
如果我编写以下代码,ReSharper 会建议我将第一个变量 chr3 转换为常量,而不是第二个变量 chr127。
Public Class ClassX
Public Sub SomeMethod()
Dim chr3 As String = Chr(3)
Dim chr172 As String = Chr(172)
Debug.WriteLine(chr3)
Debug.WriteLine(chr172)
End Sub
End Class
如果我将两者都转换为常量,我会在 Chr(172) 上收到 Visual Studio 编译器警告,指出“需要常量表达式”,但Chr(3) 没有编译器警告。
Public Class ClassX
Public Sub SomeMethod()
Const chr3 As String = Chr(3)
Const chr172 As String = Chr(172)
Debug.WriteLine(chr3)
Debug.WriteLine(chr172)
End Sub
End Class
是什么让Chr(3) 成为常量表达式而不是Chr(172)?
【问题讨论】:
-
+1 个有趣的问题。我很确定它与 172 超出标准 ASCII 表有关(它是 7 位,我希望您的问题因此发生在 127 以上的值),但我不知道为什么它会这样打扰编译器。
-
很好的洞察力。它似乎与 8 位值有关,因为样本值 122 和 127 被接受为常量表达式,但 128 和 172 不是。
-
+1 个有趣的问题