了解一些代码

时间:2014-05-08 20:05:35

标签: asp.net .net vb.net

我有一个几年前建立的应用程序。我遇到了一段令我困惑的代码,因为它在整个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

据我所知它重载了一个函数,但是

  1. 为什么[]存在,它们是什么意思?你什么时候使用它们?如果我删除它们我有编译错误。
  2. 获取VB .Net在属性中使用,所以这是某个属性的某些快捷方式访问?或者
  3. 我在哪里查看哪种方法超载?
  4. 我使用的代码类似于List(Of Customer),IQueryable(客户),但是(Of B)如何以这种方式允许?
  5. 我已经在MSDN上阅读并进行了研究。我唯一想到的是一些C#语法转换或一些旧的VB6语法,原始开发人员在创建应用程序时必须使用这种语法。

    感谢对此的任何澄清。

2 个答案:

答案 0 :(得分:4)

因为GetVisual 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禁止。