将一个类对象强制转换为其他类对象

本文关键字:对象 转换 其他 一个 | 更新日期: 2023-09-27 18:28:29

我有两个类A和B,我想将A的实例强制转换为B。最好的方法是什么?如何创建一个实用程序类来执行此任务?

public class A
{}
public class B
{}

将一个类对象强制转换为其他类对象

一个很好的起点是查看MSDN关于铸造和类型转换的文档。

由于这两个类之间没有直接关系,您需要编写一个转换运算符。例如:

public class A
{
    public int AValue { get; set; }
}
public class B
{
    public int BValue { get; set; }
    public static explicit operator B(A instanceOfA)
    {
        return new B { BValue = instanceOfA.AValue };
    }
}

然后你可以写:

A instanceOfA = new A { AValue = 7 };
B instanceOfB = (B)instanceOfA;
// Will output "7"
Console.WriteLine(instanceOfB.BValue);

我从MSDN上获得了这个例子的文档"使用转换运算符"。

如果这两个类之间存在直接关系,例如B源自A,例如:

public class A
{
    public int Value { get; set; }
}
public class B : A
{
    public string OtherValueSpecificToB { get; set; }
}

如果你想从B转换为A:,你就不需要任何额外的代码了

B instanceOfB = new B { OtherValueSpecificToB = "b", Value = 3 };
A instanceOfBCastToA = (A)instanceOfB;
// Will output "3";
Console.WriteLine(instanceOfBCastToA.Value);
// Will not compile as when being treated as an "A" there is no "OtherValueSpecificToB" property
Console.WriteLine(instanceOfBCastToA.OtherValueSpecificToB);