在c#中装入字符串

时间:2014-08-10 17:01:08

标签: c# boxing

每当我在c#中搜索拳击时,我都会遇到一个陈词滥调的例子:

string s = "something";
Object o = s;

这很容易理解,值类型在运行时被强制转换为非常通用的引用类型。好,好。我想谈谈更具体的拳击类型:

int i= something;
String s2 = 2
  • 希望这个例子符合拳击的定义,我想指出它不仅限于String到String。它也适用于int到Integer。
  • 如果我没有错,所有原始类型都是它们相应引用类型的原始表示,它们是我们可以称之为“轻量级包装器”的东西。
    • 现在我的问题是,在运行时,是否有拳击原始类型对其相应引用类型的任何好处?

2 个答案:

答案 0 :(得分:3)

string s= something;
String s2 = 2

这不是拳击。 String是一个引用类型,当涉及到C#时,当你说String时它就是一个类,它的别名是string。请参考Jon Skeet给出的超级问答: - What's the difference between String and string?

C#中也没有Integer而是intSystem.int32这是一种类型,你没有对值类型进行装箱。

最后但并非最不重要 Java不是C#

答案 1 :(得分:1)

拳击正在将值类型转换为引用类型。它在值类型周围放置一个对象(引用类型)框 原始类型没有相应的引用类型,因此您对boxing primitive type to its corresponding reference type at run time的问题无效。

int是一个C#关键字,用作预定义.NET框架值类型System.Int32 http://msdn.microsoft.com/en-us/library/ya5y69ds.aspx

的别名

拳击的例子:

int i = 5;
object o = i;   //box the primitive type int in an object.