4

C# では、次のようなものが表示される場合があります。

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

または同様の行(ただし、大なり小なり記号なし):

[assembly: AssemblyTitle("MyProject")]

最初のものは属性 (gt と lt 記号があります) と呼ばれ、メソッドや型などに一種のメタデータを追加するために使用できることは知っていますが、2 番目の構文はどういう意味ですか? この構文を使用して何かを F# に変換しようとしています。つまり、次の行です。

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

3 に答える 3

7

しかし、2番目の構文はどういう意味ですか?

これは、属性が型 (クラスまたは構造体) またはメンバーではなく、アセンブリに適用されていることを意味します。

F# では、翻訳しようとしている行は次のようになります。

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

ただし、詳細を確認しないと、これを適用する必要がある場所 (型、メソッドなど) を判断することはできません。typeただし、これが通常 C# クラスで使用されることを考えると、これは F# での定義に当てはまると思います。

ちなみに、[<DllImport("myUnmanagedDLL.dll")>]有効な C# ではありません。これは F# の構文です。C# は[Attribute]属性に使用します (および VB.Net は を使用します<Attribute>)。

于 2012-08-06T17:01:38.730 に答える
6

参考までに — F# では、アセンブリ レベルの属性は通常、空のdoブロックに適用されます。

[<assembly: AssemblyTitle("MyProject")>]
do ()
于 2012-08-06T19:42:04.047 に答える
3

C# と VB.NET 構文を混同していると思います

VB.NET では<DllImport("myUnmanagedDLL.dll")>、C# では[DllImport("myUnmanagedDLL.dll")]大なり記号または小なり記号がありません。

2 つ目はアセンブリ属性で、特定のクラス、メソッド、またはプロパティだけでなく、アセンブリ全体に属性を適用するために使用されます。

于 2012-08-06T17:03:58.650 に答える