C#方括号和大于/小于

时间:2012-08-06 16:58:44

标签: c# .net f#

在C#中,您可能会看到以下内容:

[<DllImport("myUnmanagedDLL.dll")>]

或类似的行(但没有大于/小于符号):

[assembly: AssemblyTitle("MyProject")]

我知道第一个被称为属性(它有gt和lt标志),可用于向方法,类型等添加一种元数据,但第二个的语法是什么意思?我正在尝试将这种语法翻译成F# - 即这一行:

[MonoMac.Foundation.Register("AppDelegate")]

3 个答案:

答案 0 :(得分:7)

  

但第二种语法是什么意思?

这意味着该属性正在应用于程序集,而不是类型(类或结构)或成员。

在F#中,您尝试翻译的行应为:

[<MonoMac.Foundation.Register("AppDelegate")>]

如果没有看到更多内容,则无法确定应该应用的位置(类型,方法等)。我怀疑这会在F#中用你的type定义,因为这通常用在C#类上。

另一方面,[<DllImport("myUnmanagedDLL.dll")>]无效C# - 这是F#语法。 C#使用[Attribute]作为属性(而VB.Net使用<Attribute>)。

答案 1 :(得分:6)

如果它在F#中有用,则程序集级别属性通常应用于空do块:

[<assembly: AssemblyTitle("MyProject")>]
do ()

答案 2 :(得分:3)

我认为你把C#与VB.NET语法混淆了

在VB.NET中它是<DllImport("myUnmanagedDLL.dll")>而在C#中[DllImport("myUnmanagedDLL.dll")]没有大于或小于符号。

第二个是一个程序集属性,它用于将属性应用于整个程序集,而不仅仅是一个特定的类,方法或属性