我们可以将值类型转换为c#或.net支持的语言中的引用类型

时间:2010-08-26 13:47:50

标签: c#

您好我们可以将值类型转换为c#或.net支持语言中的引用类型 像int是值类型...所以我们可以转换int引用类型

5 个答案:

答案 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;