如何使用户定义的基类转换运算符?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (21)

解法A

class Body : Entity
{
    Body(IntPtr pointer) : base(pointer) { }

    static Body FromEntity(Entity e)
    {
        return new Body(e.Pointer);
    }
}

解法B

class Body : Entity
{
    Body(IntPtr pointer) : base(pointer) { }

    Body(Entity e) : base(e.Pointer) { }
}

解法C

class Entity
{
    IntPtr Pointer;

    Entity(IntPtr pointer)
    {
        this.Pointer = pointer;
    }

    Body ToBody()
    {
        return new Body(this.Pointer);
    }
}

实际上这几个方法应该是转换的。

提问于
用户回答回答于

为什么不创建一个显式转换运算符?

public class Entity {
    public IntPtr Pointer;

    public Entity(IntPtr pointer) {
        this.Pointer = pointer;
    }
}

public class Body : Entity {
    Body(IntPtr pointer) : base(pointer) { }

    public static explicit operator Body(IntPtr ptr) {
        return new Body(ptr);
    }

    public static void Test() {
        Entity e = new Entity(new IntPtr());
        Body body = (Body)e.Pointer;
    }
}

热门问答

快照容量与费用的比例?如何关闭停用?

帅的惊动我国计算机大神
推荐已采纳
快照已于2019年1月22日0时启动正式商业化进程,商业化后所有存量快照和新产生的快照将根据快照使用的存储容量进行收费。 在快照商业化后,腾讯云仍旧会在国内主要地域为用户提供一定量的免费额度。免费额度策略如下: 免费额度覆盖范围为中国大陆地域,中国香港及海外地域暂无免费快照额...... 展开详请

对象存储数据三副本问题,谢谢 ?

波斯狗儿对象存储产品经理
推荐已采纳

1 COS 不完全使用副本的方式保存,数据调度能力属于我们的产品核心竞争力,具体实现方式一般不披露。

2 副本对用户是不感知的,COS 是一个最终一致性的存储,如果发起删除导致数据丢失,所有的数据都会被删除。

cvm用户退租以后,什么时间数据会被抹掉?

推荐已采纳

包年包月到期不交钱,7天后抹掉。

购买短时长的的,退租立刻抹掉。

准备开通企业档案云存储,分级授权低级”在线查阅权“,中”上传、编辑名称、移动“、高级”全部操作“?

许金泉

腾讯 · 高级工程师 (已认证)

腾讯云COS前端开发
推荐
可以通过存储桶权限配置里的 Policy权限设置。 查阅是 name/cos:GetObject 和 name/cos:HeadObject 修改如果是调用简单上传是 name/cos:PutObject 全部操作是 name/cos:*... 展开详请

语音识别中‘InvalidParameterValue.ErrorInvalidVoicedata?

腾讯云智能语音服务员

腾讯 · 社区FAQ (已认证)

推荐

这边如果无法确定音频数据的准确性,建议使用SourceType(语音数据来源)为0,即语音URL的方式进行音频数据的传输。可将音频数据放在腾讯云对象存储的服务上,然后在Url参数上填写公网可下载的音频,发送请求进行识别。

通过APP上传的图片到对象存储,缩略图的处理最佳建议是什么?

许金泉

腾讯 · 高级工程师 (已认证)

腾讯云COS前端开发
推荐

所属标签

扫码关注云+社区