6

私はVB.NETプロジェクトに取り組んでいるC#開発者であり、次のようなByRefパラメーターを使用して関数を呼び出すと、VSは:=thingieを使用させようとし続けます。

While reader.Read()
HydrateBookFromReader(reader:=???)

HydrateBookFromReader関数には次の署名があります。

Public Function HydrateBookFromReader(ByRef reader As SqlDataReader) As Book

なぜインテリセンスは私がその:=構造を使用することを主張し続けるのですか、そしてそれは何のためにあるのですか?

4

3 に答える 3

10

VBでは、名前付きパラメーターの指定に:=が使用されます。

Contact(Address:="2020 Palm Ave", Name:="Peter Evans")

これは、オプションのパラメーターを指定する場合に特に便利です。

于 2009-05-23T20:11:29.400 に答える
4

なぜインテリセンスは私がその := 構造を使用することを主張し続けるのですか? それは何のためですか?

IntelliSense は主張するのではなく、提案することに注意することが重要です。あなたのケースでそれを使用しても意味がありません...この機能は主に、多くのオプションパラメーターを含む非常に長いパラメーターリストに使用され、そのうちの最後のパラメーターのみを渡します。Microsoft Office Interop を使用する場合に便利です。

また(タグで言及しているため):これはByRef. C#とByRef同等です。つまり、メソッドがパラメーター自体を操作できるようにします。refout

于 2009-05-23T20:14:08.147 に答える
1

Intellisense は := 構文を提案しているかもしれませんが、それがなくてもコンパイルされると思います。

HydrateBookFromReader(myReader);

オプションのパラメーターが許可されている C# の将来のバージョンでは、名前付きパラメーターを使用すると、一部のパラメーターを指定して他のパラメーターを指定したり、宣言された順序とは異なる順序でパラメーターを指定したりできます。名前付きパラメーターを使用すると、渡されるパラメーターの目的をオプションで明確にすることもでき、場合によってはコードが読みやすくなります。

名前付きパラメーターは、多くの余分なパラメーターを削除できる COM Interop の c# 4.0 で特に重要になります。

Anders Hejlsberg は、Channel 9 ( http://channel9.msdn.com/pdc2008/TL16/ ) で C# の将来について優れたディスカッションを行ってい ます。名前付きパラメーターについての彼の議論は、講演の 40 分 45 秒で行われます。

于 2009-05-23T20:21:45.617 に答える