8

VBA(およびVBと思います)にはVariant型があり、より多くのメモリを消費すると思いますが、さまざまなデータ型をカバーしています。

c#に同等のものはありますか?

Windowsフォームで、次のようになります。zのタイプを修正して、正常に実行されるようにするにはどうすればよいですか。

    private void uxConvertButton_Click(object sender, EventArgs e)
    {
        int x = 10;

        byte j = (byte)x;
        upDateRTB(j);

        long q = (long)x;
        upDateRTB(q);

        string m = x.ToString();
        upDateRTB(m);
    }

    void upDateRTB(long z) {
        MessageBox.Show(this,"amount; "+z);
    }
4

5 に答える 5

13
void upDateRTB(object z) {
    MessageBox.Show(this, "amount; " + Convert.ToString(z));
}
于 2012-06-15T07:49:50.183 に答える
8

オブジェクト パラメーターはすべてを受け入れますが、変数を厳密に型指定したい場合 (およびプロセスでのボックス化を回避したい場合) は、ジェネリックを使用できます。

void upDateRTB<T>(T z) {
    MessageBox.Show(this,"amount; "+ Convert.ToString(z)); 
}

コンパイラは指定されたパラメーターに基づいてジェネリック型を解決できるため、メソッド呼び出しはまったく同じままである可​​能性があります。

于 2012-06-15T07:56:41.327 に答える
7

C# の「バリアント」型について話している場合はdynamic、.net 4.0 の型を見てください。

しかし、あなたのタスクを解決するにはz.ToString()、あなたのMessageBox.Show

于 2012-06-15T07:51:33.067 に答える
3

dynamic キーワードまたはオブジェクト タイプは、必要なバリアント動作を提供できますが、次のようになります。

この場合、関数を次のように変更します。

void upDateRTB(string z) {
    MessageBox.Show(this,"amount; " + z);
}

メソッドに必要なのはそれだけだからです。

于 2012-06-15T07:51:17.207 に答える
3

"amount; "+zの ToString メソッドを暗黙的に呼び出しますz。したがって、タイプを使用できますobject

void upDateRTB(object z) {
    MessageBox.Show(this,"amount; "+z);
}

動的を使用することもできますが、要点がわかりません:

void upDateRTB(dynamic z) {
    MessageBox.Show(this,"amount; "+z);
}
于 2012-06-15T07:52:22.990 に答える