您好我们可以将值类型转换为c#或.net支持语言中的引用类型 像int是值类型...所以我们可以转换int引用类型
答案 0 :(得分:9)
出于什么目的?
object intAsRef = 32;
是一个int作为引用类型。但这被称为拳击(see here),通常被认为是避免而不是渴望的东西。
另一方面,如果您想通过引用传递一个值对象,以便您可以在方法中更改其值,那么您需要更改接收方法和调用的签名:
public void ChangeValueOfInt(ref int input)
{
input = 4;
}
int a = 2;
ChangeValueOfInt(ref a);
//a now equals 4
答案 1 :(得分:2)
任何值类型都可以转换为引用类型,例如:
int myInt = 5;
object obj = myInt;
答案 2 :(得分:2)
这就是拳击和拆箱的主题。
int i = 5;
object o = i;
int j = (int)o;
等
答案 3 :(得分:1)
该过程在.NET中称为“装箱”,它指的是偶数值类型继承引用类型Object
。 .NET中的任何类型都可以强制转换为Object
:
int myint = 0;
object myIntAsRefType = myInt;
您也可以使用其他参考类型:
Random rnd = new Random();
object rndAsObject = rnd;
在使用任何自己的方法或属性之前,必须取消选中它们:
if(myIntAsRefType is int)
int myNewInt = myIntAsRefType as int;
可替换地:
if(myIntAsRefType is int)
int myNewInt = (int)myIntAsRefType;
答案 4 :(得分:0)
在Boxing和UnBoxing的帮助下,您可以将任何值类型转换为引用类型。拳击将允许您围绕对象包装您的值类型,而UnBoxing则相反。
拳击
int i = 10;
Object obj = (Object)i;
开箱
int j=(int)obj;