我有一个几年前建立的应用程序。我遇到了一段令我困惑的代码,因为它在整个ASP .Net应用程序中提供的功能很棒,但我只是不理解它。也许它的[]让我失望,但我认为它可能是一些C#代码转换为VB .Net ....不确定,但想知道是否有人理解这一点,如果是这样,他们可以分享它做什么
NotInheritable类中的代码
Public Overloads Function [Get](Of B)() As B
Dim myType = GetType(B)
Return DirectCast([Get](myType), B)
End Function
据我所知它重载了一个函数,但是
我已经在MSDN上阅读并进行了研究。我唯一想到的是一些C#语法转换或一些旧的VB6语法,原始开发人员在创建应用程序时必须使用这种语法。
感谢对此的任何澄清。
答案 0 :(得分:4)
因为Get是Visual Basic Language Keywords的一部分。您需要括号来表示您要将它们用作方法/属性名称。
以下是Microsoft在Keywords as Element Names in Code (Visual Basic)上的摘录:
任何程序元素 - 例如变量,类或成员 - 都可以拥有 与受限制的关键字同名。例如,您可以创建一个 变量名为Loop。但是,要参考你的版本 - 哪个 与受限制的Loop关键字同名 - 您必须要么 在它前面加上一个完整的限定字符串或用正方形括起来 括号([]),如下例所示。
答案 1 :(得分:0)
1)括号允许您使用保留字作为标识符(如c#中的&符号)。
2)这似乎是一个糟糕的命名决定。如果他们想要隐藏现有成员,他们可以使用Shadows关键字。
3)您需要检查继承层次结构。从最近的父母开始。
4)它在实现中调用了Get的不同重载,但是由于某种原因,Of B正试图将它与B禁止。