将一个类对象强制转换为其他类对象
本文关键字:对象 转换 其他 一个 | 更新日期: 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);