c# - 在 C# 中的数据类型之间进行转换

标签 c# generics casting types object

我有(例如)一个 A 类型的对象,我希望能够将其转换为 B 类型(类似于将 int 转换为 float)

数据类型A和B是我自己的。

是否可以定义此转换发生的规则?

示例

int a = 1;
float b = (float)a;
int c = (int)b;

最佳答案

是的,这可以使用 C# 运算符重载。有两个版本explicitimplicit .

这是一个完整的例子:

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/

相关文章:

c# - 使用正确的包 ://URI Format

c# - 如何编码 HTTP POST 参数(C# 客户端到 PHP 服务器)?

Delphi Rtti Get Property - 为什么这会导致 AV?

ios - 如何在 Swift 中使用没有类型参数的泛型类?

javascript - typescript - 将字符串转换为数字

c++ - C++ 中的转换和指针转换

c# - 从 IdentityUser 继承我在 UserManager<User> 上收到错误

c# - 如何在 WPF 图像中显示位图

c# - Tuple.Create 返回类型

c 结构体被传递到函数中