我有(例如)一个 A 类型的对象,我希望能够将其转换为 B 类型(类似于将 int
转换为 float
)
数据类型A和B是我自己的。
是否可以定义此转换发生的规则?
示例
int a = 1;
float b = (float)a;
int c = (int)b;
最佳答案
是的,这可以使用 C# 运算符重载。有两个版本explicit和 implicit .
这是一个完整的例子:
class Program
{
static void Main(string[] args)
{
A a1 = new A(1);
B b1 = a1;
B b2 = new B(1.1);
A a2 = (A)b2;
}
}
class A
{
public int Foo;
public A(int foo)
{
this.Foo = foo;
}
public static implicit operator B(A a)
{
return new B(a.Foo);
}
}
class B
{
public double Bar;
public B(double bar)
{
this.Bar = bar;
}
public static explicit operator A(B b)
{
return new A((int)b.Bar);
}
}
类型 A 可以隐式转换为类型 B,但类型 B 必须显式转换为类型 A。
关于c# - 在 C# 中的数据类型之间进行转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2728714/