【问题标题】:C# Access to implicit operators of base classC#访问基类的隐式运算符
【发布时间】:2020-04-12 05:57:17
【问题描述】:

我有以下设置:Entity 派生自 MonoBehaviour。 MonoBehaviour 实现了到 bool 的隐式转换。现在,如果我在 Entity 中实现到 bool 的隐式转换,它会覆盖 MonoBehaviour 中的转换。 如果我现在想同时访问旧转换和新转换,我必须强制转换回基类

public class Entity : MonoBehaviour 
{ 
    private float CurrentHealthPoints { get; set; }

    public static implicit operator bool(Entity entity) 
        => (MonoBehaviour)entity && entity.CurrentHealthPoints > 0;
}

现在我的问题是,有没有一种不同的方法而不必强制转换为基类?我尝试使用 base 关键字,但无法使用。

【问题讨论】:

    标签: c# oop implicit-conversion


    【解决方案1】:

    据我所知,除非使用的类型使用contravariance,否则显式转换是不可避免的。你也可以使用the link

    【讨论】:

    • 我怎样才能知道它是否是,或者我怎样才能将它设置为协变或逆变?
    • @harlekintiger 看似,您不能将其应用于您的案例,因为它们不是通用的。所以,你的双手被束缚的事实迫使你使用显式强制转换。
    猜你喜欢
    • 2020-11-24
    • 1970-01-01
    • 2018-08-20
    • 1970-01-01
    • 1970-01-01
    • 2014-08-18
    • 2013-08-25
    • 1970-01-01
    相关资源
    最近更新 更多