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);
}
答案 0 :(得分:10)
void upDateRTB(object z) {
MessageBox.Show(this, "amount; " + Convert.ToString(z));
}
答案 1 :(得分:5)
一个对象参数会接受所有,但如果你想保持变量强类型(并避免在过程中装箱),你可以使用泛型:
void upDateRTB<T>(T z) {
MessageBox.Show(this,"amount; "+ Convert.ToString(z));
}
方法调用可以保持完全相同,因为编译器可以根据给定参数解析泛型类型。
答案 2 :(得分:4)
如果您在c#中谈论“variant”类型,请查看.net 4.0中的dynamic
类型
但是要解决您的任务,只需在z.ToString()
MessageBox.Show
即可
答案 3 :(得分:2)
动态关键字或对象类型可以为您提供所需的变体行为,但是:
在这种情况下,我将功能更改为:
void upDateRTB(string z) {
MessageBox.Show(this,"amount; " + z);
}
因为这就是所有方法的需要。
答案 4 :(得分:2)
"amount; "+z
隐式调用z
上的ToString方法。
因此,您可以使用object
类型:
void upDateRTB(object z) {
MessageBox.Show(this,"amount; "+z);
}
你也可以使用动态,但我不明白这一点:
void upDateRTB(dynamic z) {
MessageBox.Show(this,"amount; "+z);
}