C#方括号和大于/小于

Jwo*_*sty 4 .net c# f#

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

[<DllImport("myUnmanagedDLL.dll")>]
Run Code Online (Sandbox Code Playgroud)

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

[assembly: AssemblyTitle("MyProject")]
Run Code Online (Sandbox Code Playgroud)

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

[MonoMac.Foundation.Register("AppDelegate")]
Run Code Online (Sandbox Code Playgroud)

Ree*_*sey 7

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

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

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

[<MonoMac.Foundation.Register("AppDelegate")>]
Run Code Online (Sandbox Code Playgroud)

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

另外,[<DllImport("myUnmanagedDLL.dll")>]C#是无效的 - 这是F#语法.C#[Attribute]用于属性(和VB.Net使用<Attribute>).


Dan*_*iel 6

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

[<assembly: AssemblyTitle("MyProject")>]
do ()
Run Code Online (Sandbox Code Playgroud)