E.g:
Static Void Main()
{
Employee _emp1 = new Employee();
_emp1.Age = 25;
Employee _emp2 = _emp1.Age;
}
Class Employee
{
public int Age;
}
当我像这样分配Employee _emp2 = _emp1.Age;
时,它会抛出一个编译时错误说明
无法将Int类型隐式转换为Employee
我知道Boxing是一个将Value类型转换为Object类型(引用类型)的过程。
此处_emp2
是引用类型,_emp1.Age
是值类型,但在这里我无法做到这一点?为什么呢?
我也无法进行明确的投射?
答案 0 :(得分:2)
因为您没有从int
到Employee
的隐式演员。你可以这样添加它:
static void Main()
{
Employee _emp1 = new Employee();
_emp1.Age = 25;
Employee _emp2 = _emp1.Age;
}
public class Employee
{
public int Age;
public static implicit operator Employee(int x)
{
return new Employee{Age = x};
}
}
答案 1 :(得分:0)
您必须实例化emp2
并将公共字段指定为emp1
的年龄。
Employee _emp1 = new Employee();
_emp1.Age = 25;
Employee _emp2 = new Employee{ Age = _emp1.Age };