引用类型之间的转换等于拆装箱操作吗?

念叨悠悠 2016-11-01 03:46:00
求大神告知,我这个方法中涉及到拆装箱操作了吗?

static T PrintClass<T>(T t) where T : Base
{
Sub1 s1; Sub2 s2;
if (t is Sub1)
{
s1 = (Sub1)(Object)t;
s1.Name = "小李";
s1.Age = 17;
s1 = (Sub1)(Object)t;
s1.Weight = 120;
return (T)(Object)s1;
}
else
{
s2 = (Sub2)(Object)t;
s2.Name = "小王";
s2.Age = 17;
s2 = (Sub2)(Object)t;
s2.Height = 175;
return (T)(Object)s2;
}
}

static void Main(string[] args)
{
Sub1 s1 = new Sub1();
PrintClass(s1);
Console.WriteLine(s1.Weight);
Sub2 s2 = new Sub2();

PrintClass(s2);
Console.WriteLine(s2.Height);
Console.ReadKey();
}
}

public class Base
{
public string Name
{ set; get; }

public int Age
{ set; get; }
}

public class Sub1 : Base
{
public int Weight
{ set; get; }

}

public class Sub2 : Base
{
public int Height
{ set; get; }
}
...全文
213 6 打赏 收藏 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
念叨悠悠 2016-11-02
  • 打赏
  • 举报
回复
好的。谢谢啊。
正怒月神 2016-11-01
  • 打赏
  • 举报
回复
class是引用类型。 object也是引用类型,不存在装箱拆箱的问题。
Poopaye 2016-11-01
  • 打赏
  • 举报
回复
没有涉及
念叨悠悠 2016-11-01
  • 打赏
  • 举报
回复
引用 2 楼 shingoscar 的回复:
只有struct和object之间的赋值才叫拆装箱
我知道值类型与引用类型间的转换是拆装箱操作,我不确定我这个方法是不是涉及了拆装箱操作,我是为了更好的复用代码才写成泛型方法,如果影响了速度,我觉得就没有必要了。
Poopaye 2016-11-01
  • 打赏
  • 举报
回复
只有struct和object之间的赋值才叫拆装箱
念叨悠悠 2016-11-01
  • 打赏
  • 举报
回复
自顶一下。

111,128

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧