我可以在 VB.Net 中使用 TypeName 的驼峰大小写作为变量名称吗?



来自C# 和 JavaScript 背景,我习惯于像这样复杂类型的变量声明:

//C# example
var streamWriter = new StreamWriter();

我从公司的另一部分继承了许多 VB.Net 项目,并且必须维护如下所示的代码:

'VB.Net example
Using SW As New StreamWriter(Path + "source.txt")
Dim W As New CsvWriter(SW, ",")
' additional code snipped
End Using

出于多种原因,当我向此代码库添加功能时,我想将这些变量重命名为类似于我和团队其他成员用于 C# 的样式。因此,代码如下所示:

Using streamWriter As New StreamWriter(Path + "source.txt")
Dim csvWriter As New CsvWriter(streamWriter, ",")
' additional code snipped
End Using

我知道 VB.Net 在变量名称方面"不区分大小写",因此:

Dim someVariable as String
Dim SomeVariable as String

导致警告"局部变量 SomeData 已在当前块中声明"。

但我不知道的是,我是否冒着风险或违反了一些常见的约定,因为我在 C# 中使用该类型的 camelCase 版本作为我的变量名?喜欢:

Dim cvsWriter as CvsWriter

标准中是否有某些内容或对 CLS 合规性的影响暗示我应该或不应该使用此约定?

标准中是否有某些内容或对 CLS 合规性的影响暗示我应该或不应该使用此约定?

有这样的准则:

可以在 CLR 上运行的语言不需要支持区分大小写,尽管有些语言支持区分大小写。即使您的语言支持它,其他可能访问您的框架的语言也不支持。因此,任何可从外部访问的 API 都不能仅依靠大小写来区分同一上下文中的两个名称。

X 不假定所有编程语言都区分大小写。他们不是。名称不能仅因大小写而异。

这里重要的一点仅凭情况。

Using streamWriter As New StreamWriter(Path + "source.txt")

,这两个streamWriter单单不单就不同,它们的范围也不同。只要有其他东西可以区分名称(例如范围(,您就不会违反规则。

相反,如果要在 C# 中声明此枚举:

public enum Wtf
{ 
yes,
no,
Yes,
No
}

,它可以在 C# 中工作,但您将无法从例如 .VB 正确使用它,因为它在同一范围内定义了多个名称,这些名称仅因大小写而异。

(我在 API 中看到PayPal一个例子。如果不编辑自动生成的包装器代码,就不可能从 VB 使用它。

因此,当您声明自己的变量来保存类的实例时,您可以在该类之后命名该变量,您可以使用任何您想要的情况,并且它不应该破坏任何内容(如果是这样,则某些东西不符合 CLS(。

您不应该做的是创建一个公开可见的实体,其中相等的成员仅因大小写而异,例如类的两个属性或枚举的两个成员。

相关内容

  • 没有找到相关文章

最新更新