在C#中,您可能会看到以下内容:
[<DllImport("myUnmanagedDLL.dll")>]
或类似的行(但没有大于/小于符号):
[assembly: AssemblyTitle("MyProject")]
我知道第一个被称为属性(它有gt和lt标志),可用于向方法,类型等添加一种元数据,但第二个的语法是什么意思?我正在尝试将这种语法翻译成F# - 即这一行:
[MonoMac.Foundation.Register("AppDelegate")]
答案 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")]
没有大于或小于符号。
第二个是一个程序集属性,它用于将属性应用于整个程序集,而不仅仅是一个特定的类,方法或属性