-1

私はこのようなコードを持っています:

void F(bool a, bool b) { }
void F(int a) { }
int G<T1, T2>(int a) { return 1; }
class A { }
class B { }

void Main(string[] args)
{
    int G = 1;
    int A = 1;
    int B = 1;

    F(G<A, B>(7));      // call F(int a)
    F(G<A, B>(7 / 3));  // call F(int a)
    F(G<A, B>3);        // call F(bool a, bool b)
}

しかし、マウスを関数Aの 3 番目の呼び出しに合わせると、代わりに と表示されます。どうしてこうなった?Mainclass Sample.Program.A(local variable) int A

ここに画像の説明を入力

フレームワーク 4 で Visual Studio 2010 Professional を使用しています。IntelliSense と同じですか?


3行目がすぐに分からない方へF(G<A, B>3);

それはF( G < A , B > 3 );

どこG < Aで bool でありB > 3、bool であり、その関数がメソッドを呼び出していvoid F(bool a, bool b)ます。


このコードの目的は教育目的のみであり、それがそのような理由です。しかし、IntelliSense は 3 行目で正しく機能していませんF(G<A, B>3);

4

1 に答える 1

-1

わかりました。T1、T2はそれ自体が型名であるため、絶対に変数ではないため、IntelliSenseの機能は正しく機能しています。

于 2012-07-26T03:31:15.263 に答える