我目前有一个结构,我可以将其转换为另一种类型,如下所示:

    public static implicit operator Vector2(Complex a)
    {
        return new Vector2(a.Real,a.Imaginary);
    }

目前,这是如何自动允许的:
Vector2 a = new Complex(b,c); //valid

但我希望它不会自动允许这样做。而是只允许:
Vector2 a = (Vector2) new Complex(b,c);

我怎样才能对我的结构进行这种行为的限制转换,就像 float 转换到整数的工作方式一样?

最佳答案

只需将 implicit 更改为 explicit :

public static explicit operator Vector2(Complex a)
implicit 部分告诉编译器它可以在没有指定转换的代码的情况下完成。有关更多详细信息,请参阅 Microsoft documentation for user-defined operators

关于c# - 在 C# 中转换为另一种类型的自定义结构,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57831387/

10-12 07:39