为什么我不能在 C# 中编写从基类到派生类的隐式运算符?

2024-04-22

public class Derived : BaseClass
{
    public Derived(string name) : base(name) {}

    public static implicit operator BaseClass(Derived derived)
    {
        return new BaseClass(derived.ColorHex);
    }

    public static implicit operator Derived(BaseClass baseclass)
    {
        return new Derived(baseclass.name);
    }
}

这行不通。为什么不允许?
I can可能会编写使其有意义所需的逻辑,尤其是从基数转换为派生数时。

编辑:更改了问题的标题


因为已经存在隐式转换Derived to BaseClass,反之则没有任何意义。

关于后者:如果您Base对象可以隐式转换为Derived——为什么他们不呢?Derived首先是对象?

强制性报价standard http://www.ecma-international.org/publications/standards/Ecma-334.htm:

6.1.6 隐式引用转换

隐式引用转换为:

  • [...]
  • 从任何类类型 S 到任何类类型 T,前提是 S 是 源自 T。

这表示存在隐式转换Derived => Base,众所周知。

6.2.4 显式引用转换

显式引用转换为:

  • [...]
  • 从任何类类型 S 到任何类类型 T,前提是 S 是 T 的基类。
  • [...]

这表示已经有显式转换Base => Derived(这允许您在运行时尝试向下转型)。

6.4.1 允许的用户定义转换

C# 只允许声明某些用户定义的转换。在 特别是,不可能重新定义已经存在的 隐式或显式转换。

这表明,由于两种感兴趣的转换已经由语言定义,因此您无法重新定义它们。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么我不能在 C# 中编写从基类到派生类的隐式运算符? 的相关文章

  • 为什么 PCRE 正则表达式比 C++11 正则表达式快得多

    一些示例代码 这是使用 cregex iterator 的 c 11 部分 std chrono steady clock time point begin0 std chrono steady clock now regex re
  • 如何在样式中访问控件父级的属性

    我的列表视图将项目数据模板化为标签 我正在为该标签设计一种样式 但我不知道如何访问父级的 ListViewItem IsSelected 属性 编辑 尝试了下面的建议 但仍然出现异常 这是我的完整代码
  • SIGKILL 和 SIGSTOP 信号无法被捕获、阻止或忽略,为什么?

    我想知道为什么这两个信号在一个进程中不能被捕获 阻止或忽略 可以使用 signal 更改其余信号的操作 这两个信号和其余信号有什么区别 如果您谈论它们被阻止的原因 那么原因已经提到了 Adam B https stackoverflow c
  • 我是否必须使用我的数据库训练 Viola-Jones 算法才能获得准确的结果?

    我尝试提取面部数据库的面部特征 但我认识到 Viola Jones 算法在两种情况下效果不佳 当我尝试单独检测眼睛时 当我尝试检测嘴巴时 运作不佳 检测图像的不同部分 例如眼睛或嘴巴 或者有时会检测到其中几个 这是不可能的情况 我使用的图像
  • 验证码怎么写?

    我正在开发一个注册表 我想放置验证码 我生成一个随机字符串 但如何将其转换为图像 否则我如何开发验证码或任何参考 谢谢 Try out 验证码 http recaptcha net plugins aspnet 或查看博客文章 使用 Asp
  • 在 Eclipse 4.4.2 中使用 C 代码中的构建变量

    我有一个之前使用 Eclipse 3 5 2 创建的项目 在其中 我能够在项目属性中设置构建变量 在这种情况下 假设我设置了SW VERSION是 4403 现在这应该是一个十六进制数字 所以在构建设置中 我添加了一个符号 VERSION
  • Mono 和 WebRequest 速度 - 测试

    在 mono 4 6 2 linux 中 我注意到 wget 下载文件的速度与webclient DownloadString 所以我做了一个小测试来调查 为什么 wget 明显比 C 快 根据我自己的实验 使用 wget 下载 手动读取文
  • 字符串中unicode字符的正则表达式

    我正在使用 C 进行一些 OCR 工作 并提取了我需要使用的文本 现在我需要使用正则表达式解析一行 string checkNum string routingNum string accountNum Regex regEx new Re
  • Collection.Contains() 使用什么来检查现有对象?

    我有一个强类型的自定义对象列表 MyObject 它有一个属性Id 以及一些其他属性 假设Id of a MyObject将其定义为唯一 我想检查我的收藏是否还没有MyObject对象有一个Id在我添加新的之前 共 1 个MyObject到
  • 如何获得字符串的所有字谜

    我试图找到一个字符串的所有可能的字谜并仅使用递归将它们存储在数组中 我被困住了 这就是我所拥有的一切 int main const int MAX 10 string a ABCD string arr 10 permute arr a 0
  • 无效的跨线程访问问题

    我有两个 ViewModel 类 PersonViewModel 和 PersonSearchListViewModel PersonViewModel 实现的字段之一是通过 WCF 下载的个人资料图像 本地缓存在独立存储中 PersonS
  • 在大型数据绑定 ObservableCollection 中添加/删除许多项目,而无需冻结 GUI

    我和我的团队正在开发一个 WPF 应用程序 该应用程序显示多个并发 XamDataChart 控件 由 Infragistics 提供 每个图表都绑定到不同的 ObservableCollection 最多可包含 200 万个点 对于每个图
  • 在 C 中使用另一个结构中的二维结构数组的编码问题

    我正在使用一个二维结构数组 它是另一个结构的一部分 这不是我做过很多事的事情 所以我遇到了问题 该函数在接近末尾的 测试 for 循环后最终失败 它在出现段错误之前正确打印出一行 我的代码中将数据读入虚拟二维结构数组的部分工作得很好 所以它
  • WinForms TreeView - 如何手动“突出显示”节点(就像被单击一样)

    我需要知道如何让以编程方式选择的节点以图形方式处于 选定 状态 就像用户单击它一样 SelectedNode 仅使这一节点在内部被选中 非常感谢 它没有显示为突出显示的原因是由于树视图没有焦点 这是我的测试表单上的按钮单击事件 TreeVi
  • 如何存储将被多个不同类访问的字符串常量? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 关于堆栈溢出有太多不同的答案 声明一个命名空间 并在 hpp 文件中将所有字符串标记为 extern const 并在 cpp 文件中放置它们的
  • 最佳实践:从属性中抛出异常

    什么时候适合从属性 getter 或 setter 中抛出异常 什么时候不合适呢 为什么 关于这个主题的外部文档的链接会很有帮助 谷歌搜索结果出奇的少 Microsoft 在以下位置提供了有关如何设计属性的建议 http msdn micr
  • 将 KeyUp 作为参数传递 WPF 命令绑定文本框

    我有一个文本框 KeyUp 事件触发器连接到 WPF 中的命令 我需要将按下的实际键作为命令参数传递 该命令执行得很好 但处理它的代码需要知道按下的实际键 记住这可能是一个回车键或不仅仅是一个字母的任何键 所以我无法从 TextBox te
  • 为什么 `boost::any` 比 `void*` 更好?

    有什么先天优势boost any and boost any cast提供超过使用void and dynamic cast 优点是boost any比类型安全得多void E g int i 5 void p i static cast
  • 如何在 C# 中读取 Visio 文档内容

    我的DLL库代码如下 using System using IVisio Microsoft Office Interop Visio namespace Emix public class Visio protected String p
  • 在C中更改函数内的数组

    我正在学习 C 并且很困惑为什么在 main 中创建的数组不会在函数内部更改 我假设传递的数组是一个指针 并且更改指针应该更改数组 对吧 有人可以解释这种情况下发生了什么吗 谢谢你的帮助 int main int i length 10 i

随机推荐

  • 如何访问 ItemsControl 的子项?

    如果我有一个源自ItemsControl 我可以访问它的子集合 以便我可以循环它们来执行某些操作吗 我目前似乎找不到任何简单的方法 类似的解决方案Seb s https stackoverflow com a 1000438 3195477
  • 如何去掉 Matlab 单元格中的双引号?

    我在 Matlab 中有一个单元格数组 单元格中的所有元素都表示为 something 我怎样才能创建一个数组 something 这里有两个解决方案 strrep删除所有双引号实例 同时regexprep只删除字符串开头和结尾的双引号 感
  • 生成的 pdf 中的图像损坏了发送到服务器的 pdf

    我正在使用 jsPDF 在 Web 应用程序中创建 PDF 文档 将该文档发送到 Perl 并让 Perl 通过电子邮件发送它 效果很好 但是 当我将图像添加到 PDF 文档时 它不再起作用 因为 Adob e Reader 说该文件已损坏
  • WebSocket Stomp over SockJS - http 自定义标头

    我在 javascript 客户端中使用 stomp js 而不是 SockJS 我正在使用连接到 websocket stompClient connect function frame stomp over sockJS 连接有 2 个
  • 从节点树中获取总和

    我正在学习php 我有这个结构 company 1 10 all 50 company 1 1 10 all 20 company 1 1 1 10 all 10 company 1 2 20 all 20 每家公司可能有多个子公司 也可能
  • 切换div的可见性属性

    我的 div 中有一个 HTML 5 视频 然后我有一个自定义播放按钮 效果很好 我将视频的可见性设置为加载时隐藏 单击播放按钮时可见 再次单击播放按钮时如何将其恢复为隐藏 function showVid document getElem
  • 使用 linq 将数据集列表

    我有一个DataSet我想转换DataSet into List
  • 云函数在运行所有代码之前结束

    我正在尝试创建一个云函数 但它在 firebase 日志中 在执行所有任务之前显示 已完成 这是我的代码 export const count functions pubsub schedule 0 8 timeZone Europe Br
  • Node.js 中的 git 命令

    我想知道是否有人知道 进入 npm 包来使用 git 命令 我有一个nodejs项目 我想执行以下命令 克隆 git 创建分支 git pull request 来自创建的分支 我尝试了一些 npm 包但没有成功 任何帮助将不胜感激 谢谢
  • Pytest - 测试解析器错误:无法识别的参数

    我正在尝试测试一个非常简单的函数 由于多次尝试测试使用参数解析器作为参数的更复杂的函数而失败 来自 runfile py import argparse import os def get input args parser argpars
  • 扩展无法启用或安装的问题

    php 7 3 5 你好 我的扩展 ext http 有问题 composer 说我缺少 ext http 即使我在composer json 中写了这个 为什么 这就是这个确切的消息 问题1 您的系统中缺少请求的 PHP 扩展 ext h
  • 如何将 中的项目向右对齐

    我如何将下面的所有内容对齐到最右侧 div div
  • 在没有 DBCC INPUTBUFFER 的情况下获取 SQL Server 中的最后一个命令

    有没有办法在不使用的情况下获取最后执行的 SQL Server 命令DBCC INPUTBUFFER 例如 是否有包含此信息的系统视图或目录 Thanks 您可以将 SPID SQL 进程 ID 传递给以下内容 DECLARE sql ha
  • 字符串比较。如何将字符串与 std::wstring 进行比较? WRT STRCMP

    我试图比较两种我期望在某种程度上兼容的格式 因为它们通常都是字符串 我尝试使用字符串和 std wstring 执行 strcmp 并且我确信 C 专家知道 这根本无法编译 是否可以比较这两种类型 这里有简单的转换吗 你需要转换你的char
  • java:使用扫描仪类读取文本文件并将信息存储在数组中

    我有一个包含学生成绩的文本文件 例如 Kim 40 45 Jack 35 40 我试图从文本文件中读取这些数据 并使用扫描仪类将信息存储到数组列表中 任何人都可以指导我正确编写代码吗 Code import java io import j
  • Laravel 门面有依赖性吗?

    我读到 一个类不应该有太多的依赖关系 在一本书中 它指出 4 个依赖项可能表明类可能做了太多事情 假设我编写了一个使用 10 个依赖项的类 6 个类和 4 个外观 我应该只关心这 6 个类并将它们分开 还是也关心 4 个外观 如果有人想知道
  • 为什么 Jing 不允许在 id 属性中使用冒号(“:”)?

    我一直在努力反对 xsd ID 不允许在 id 属性中使用冒号 我第一次注意到这一点是在 Emacs 中使用 James Clark 的 nxml mode 时 因为它验证了我正在使用的 XHTML 文件 然后 我使用 Jing 针对 RN
  • Jquery Ajax - Tumblr API v2

    我试图深入了解 Tumblr 的黑暗世界 但无法理解如何克服以下错误 Uncaught SyntaxError Unexpected token 我相信这可能是因为我正在返回 json 但尝试使用 jsonp 这是我要发送的内容 funct
  • 互联网上的 UDP 多播?

    我不确定如何最好地解决我的问题 我有一个在远程计算机上运行的服务 用于接收和处理 UDP 数据包 我希望该服务能够将这些数据包重新发送给任何需要它们的人 可能是任何人 通常是一台机器 但也可能更多 我认为 UDP 多播将是理想的 该服务可以
  • 为什么我不能在 C# 中编写从基类到派生类的隐式运算符?

    public class Derived BaseClass public Derived string name base name public static implicit operator BaseClass Derived de