9

outVB.NET にはパラメーターがありませんが<Out()> ByRef、COM および P/Invoke メソッドで指定して、外部メソッドに対して同じ効果を得ることができます。

内部メソッド (つまり、.NET コードによってのみ呼び出されるメソッド) で同じことを指定すると、実際に Jitter (または VB.NET コンパイラ) に役立ちますか? それとも、現在はプログラマーのメモとしてのみ役に立ちますか。

将来の Jitter で使用できる可能性はありますか、それともコンパイル時にこの属性が失われますか?

4

2 に答える 2

9

VB.NET<Out()>によって C# クライアントに引数が必要になることを確認したoutので、実際には同じように見えます。

また、C# クライアントはその引数を現在の値とともにメソッドに渡しますが、COM や P/Invoke の場合とは異なり、マーシャリングを行う必要がないため、これは驚くべきことではありません。(また、C# ではプロパティを引数で直接設定することoutはできないため、C# が以前の不要な代入を最適化するかどうかを確認する方法はないようです。)

したがって、答えは、将来のC#クライアントがコードを使用するのに役立ち、ジッターがC#の同等物を調整する場合、ここで同じことを行うということです。Outただし、VB のような言語が存在するため、属性自体を尊重しないため、多くのことはできません。

于 2011-07-20T10:33:07.917 に答える
1

VB クラスをサブクラス化MembershipProviderし、それを A と呼び、次に A を B と呼ぶ C# クラスでサブクラス化しました。C# コード B は、 の抽象メソッドMembershipProviderが既に実装されているという事実を認識していませんでした。基本クラスの抽象メソッドのOutAttributeように指定されたパラメーターに VB クラスでを適用するまでは、VB サブクラス Aを使用していoutました。MembershipProviderこれは、COM や P/Invoke だけにとどまらない影響を及ぼします。

于 2014-03-10T14:31:48.103 に答える