在c#中为引用类型赋值

时间:2015-05-20 11:40:28

标签: c#

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是值类型,但在这里我无法做到这一点?为什么呢?

我也无法进行明确的投射?

2 个答案:

答案 0 :(得分:2)

因为您没有从intEmployee的隐式演员。你可以这样添加它:

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 };