【问题标题】:VB.NET Brackets () {} [] <>VB.NET 括号 () {} [] <>
【发布时间】:2012-06-13 18:49:36
【问题描述】:

谁能帮我填一下空格,包括使用的简要描述,也许还有一个代码 sn-p?我特别清楚前两个,但特别是最后一个有点模糊:

  • () - 用于调用函数、对象实例化、传递参数等。
  • {} - 用于定义和添加元素到数组或集合中。
  • [] - 用于强制将对象视为类型而不是关键字。
  • - 用于...?

例如,我经常看到这样的东西,但仍然不太清楚括号是什么意思......

<TemplateContainer(GetType(TemplateItem))> _
Public Property MessageTemplate As ITemplate

【问题讨论】:

    标签: vb.net syntax punctuation


    【解决方案1】:

    VB.net 使用括号表示算术分组和函数参数(在 C# 中都使用括号),以及数组下标和默认属性参数(在 C# 中都使用括号),(索引器)等。它还使用(Of ... ) 来包含类型列表(在C# 中将包含在&lt; ... &gt; 中,没有“Of”关键字。

    大括号用于数组或集合初始化表达式,也用于定义具有多个约束的泛型类型(例如(Of Foo As {IEnumerable, IDisposable, Class}))。请注意,后一种用法只允许在约束中使用;这是不可能的,例如Dim MyThing As {IEnumerable, IDisposable, Class})。

    大括号现在也用于New With {} 构造:

    Dim p = New Person With {.Name = "John Smith", .Age = 27}
    Dim anon = New With {.Name = "Jack Smythe", .Age = 23}
    

    方括号用于将其拼写与保留字的拼写匹配的标识符括起来。例如,如果一个类定义了一个名为Not 的方法(可能该类是用一种没有关键字Not 的语言编写的),则可以在VB 中通过将其名称括在方括号中来使用这种方法(例如someVariable = [Not](5) )。在没有方括号的情况下,上述表达式会将 someVariable 设置为 -6(将 vb.net 的 Not 运算符应用于值 5 的结果)。

    如别处所述,尖括号用于属性。请注意,在许多情况下,属性放置在它们影响的事物上方的行上(以避免将受影响的变量推过屏幕的右边缘)。在旧版本的 vb 中,这种用法需要使用换行符(尾随下划线)。

    尖括号也用于XML LiteralsXML Axis Properties

    Dim xml = <simpleTag><anotherTag>text</anotherTag></simpleTag>
    Console.WriteLine(xml.<anotherTag>.First.Value)
    

    【讨论】:

    • 感谢您的详尽解释,非常有帮助。 :)
    • +1,但要完整,这个答案应该提到 XML 文字。
    • @MarkHurd:我忘记了这些,因为我从未使用过它们。随意编辑答案以包含它们,因为您可能会比我更准确地描述它们。
    • @MarkHurd:想在答案中添加对 XML 文字的描述吗?
    【解决方案2】:

    在这种情况下,它用于属性声明。它也可以用在 XML Literals 中,如下所示:

    <TestMethod>
    Public Sub ThisIsATest()
      If 1 <> 0 Then
        Dim foo = <root>
                    <child>this is some XML</child>
                  </root>
      End If
    End Sub
    

    【讨论】:

    • 我非常喜欢实际实现的示例。非常感谢。你得到我的投票。 :)
    【解决方案3】:

    在VB.Net中,&lt;&gt;用于包围Attributes

    【讨论】:

    • 芦苇我的男人!谢谢...出于某种原因,Google 不喜欢搜索括号等符号。当您真正知道要寻找什么时,更容易找到。 ;)
    【解决方案4】:

    VB.NET 使用&lt;&gt; 表示属性以及表示“不等于” (!=)

    在您的示例中,它只是包含属性。 C# 中的相同代码将是

    [TemplateContainer(GetType(TemplateItem))]
    public ITemplate MessageTemplate { get; set; }
    

    此属性用于开发模板化控件,将数据与表示分离。换言之,模板化控件可以在更改外观的同时保留相同的功能。

    【讨论】:

    • 是的,我非常熟悉 SQL 和其他语言中的“不等于”。编辑:对于奖励积分,那如何限制/增强/等声明?谢谢你。 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-17
    • 1970-01-01
    • 1970-01-01
    • 2019-04-13
    • 1970-01-01
    • 2011-01-12
    相关资源
    最近更新 更多