永久铸造到超类

2024-06-27

If:

class Car : Automobile
{}

我可以:

Car toyota = new Car();
Automobile tauto = (Automobile)toyota;

但如果我这样做tauto.GetType().Name仍然会是Car.

是否可以执行强制转换,以便将类型永久更改为“汽车”(无需克隆对象)?

我试图克服的问题是,c# 中没有多重继承,我需要在一种方法中合并来自 2 个服务的对象(具有相同的签名),并返回一种类型。


不。如果不构建一个new汽车对象。

然而,也没有理由这样做。这里氏替换原则 http://en.wikipedia.org/wiki/Liskov_substitution_principle说任何Car应该始终像对待Automobile,并且用户的预期行为不应发生变化。

只要你正确设计你的类层次结构,使用Car as an Automobile应该总是完全可以接受的。


旁注:这是使用的部分原因Type.GetType()不是检查类型的首选方法。使用更安全、更好is http://msdn.microsoft.com/en-us/library/scekt9xw(VS.71).aspx and as http://msdn.microsoft.com/en-us/library/cscsdfbt(VS.71).aspxC# 中的关键字。如果你检查的话它们会返回 truetauto is Car.

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

永久铸造到超类 的相关文章

  • 为什么更新外键后引用约束会不一致?

    抱歉 这个模糊的标题很难用一句话来描述 我有 2 个实体User and UserAddress 其中 User 有 2 个外键DefaultInvoiceAddressId and DefaultDeliveryAddressId和 Us
  • 求 a 范围内的 pow(a^b)modN

    对于给定的b and N以及一系列a say 0 n 我需要找到ans 0 n 1 where ans i 没有a s为此pow a b modN i 我在这里搜索的是可能的重复pow a b modN对于一系列a 以减少计算时间 例子 i
  • 如何从 std::vector 中删除元素而不调整其大小

    迭代器擦除 迭代器位置 迭代器擦除 首先是迭代器 迭代器最后 擦除元素 从向量中删除 容器可以是单个元素 位置 或一系列元素 第一个 最后一个 这有效地减少了向量 大小除以元素数量 删除 调用每个元素的 之前的析构函数 and remove
  • 在宏中使用 # [重复]

    这个问题在这里已经有答案了 请解释一下代码 include
  • 错误 C2065:'cout':未声明的标识符

    我正在处理我的编程作业的 驱动程序 部分 但我不断收到这个荒谬的错误 错误 C2065 cout 未声明的标识符 我什至尝试过使用std cout但我收到另一个错误 IntelliSense 命名空间 std 没有成员 cout 当我宣布u
  • 如何处理作为参数传递到方法中的 Lambda 表达式 - C# .NET 3.5

    我对 Lambda 表达式的了解有点不稳定 虽然我可以编写使用 Lambda 表达式 又名 LINQ 的代码 但我正在尝试编写自己的方法 该方法采用一些 Lambda 表达式类型的参数 背景 我正在尝试编写一个方法 该方法从任何其他对象类型
  • 如何将 QSerialPort 模块添加到 CMake 中?

    我想将 QSerialPort 模块添加到 CMake 中 根据我的理解 我需要将QT 串口添加到 pro中 我只想使用 CMake 所以我尝试编译简单的 CMake 文件 但有错误 QtCore 正在工作 qDebug 可以毫无问题地显示
  • 使用私有构造函数的 C# 单元测试类?

    好吧 我刚刚收到一个作业 我必须对具有私有构造函数的类执行单元测试 现在 当所有方法也都是非静态时 我该如何在不初始化类的情况下进行单元测试 有什么方法可以对具有私有构造函数的类进行单元测试 无需反射 如果您无法将类公开 您仍然可以通过以下
  • 如果 .txt 文件不存在,则创建一个,如果存在则追加新行

    我想创建一个 txt 文件并写入它 如果该文件已经存在 我只想添加更多行 string path E AppServ Example txt if File Exists path File Create path TextWriter t
  • UWP - 绑定枚举差异

    我遇到了一个非常有趣的问题 假设 UWP 应用中有以下 XAML 页面内容
  • argc 和 argv 在 Windows 中没有用吗?

    在 Linux 中 argc 和 argv 计算终端中的参数 但在 Windows 中 我找不到放置第二个参数的地方 事实上 每次我运行该程序时 它都会创建那个丑陋的黑色窗口 我什至没有机会给出任何争论 那么这两个变量在Windows平台下
  • Excel 2007 中的数值 - 底层 xml 文件中的表示与存储

    这个问题与 NET和OpenXml有关 我已经阅读了以下文章 它有很好的解释 但没有回答我的问题 Excel 2007 中数值的可视化与底层 xml 文件不一致 https stackoverflow com questions 58594
  • 如何在 Windows 8.1 上打开多个 Visual Studio 窗口? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我使用的是 Windows 7 我能够启动多个 Visual Studio 并同时工作 现在我有 Windows 8 1 操作系统 每当我
  • 合并大文件的最佳方法是什么?

    我必须合并数千个大文件 每个大约 200MB 我想知道合并这些文件的最佳方法是什么 行将有条件地复制到合并文件中 可以使用 File AppendAllLines 或使用 Stream CopyTo 吗 使用 File AppendAllL
  • 是否可以在 Eclipse 中为除 Java 之外的 Eclipse 编写插件?

    谁能帮我用c 写一个eclipse插件 weekens 和 celavek 感谢您提供的信息 我正在研究 JNI 并将尝试实现它 celavek 我们必须做什么样的主控 控制 在C 和java接口中处理是否风险更大 我的要求是在 Java
  • 矩阵行列式算法 C++

    我是编程新手 我一直在寻找一种找到矩阵行列式的方法 我在网上找到了这段代码 但我很难理解这里的算法 我对递归的基础没有问题 但继续和主循环我很难理解 非常感谢任何可以向我解释该算法的人 int determ int a MAX MAX in
  • 更快的 WinSock sendto()

    我使用的是 Windows Server 2008 我的程序是用 C 编写的 我在 while true 循环中使用 WinSock2 和 sendto 来发送数据包 代码如下 while true if c snd gt max c sn
  • 具有可导出私钥的证书的“错误密钥”例外

    我正在尝试使用非对称加密来加密然后解密文件 我已经使用 makecert 创建了一个测试证书并将其安装到我的个人本地计算机存储中 将来我必须在多个服务器上安装此证书 这就是为什么我使用 pe 标志创建它 即使用可导出的私钥 证书已成功创建并
  • 如何从与 C# lambda 集成(而非代理集成)的 Amazon API 网关获取正确的 http 状态代码?

    我正在使用 C lambda 与 API 网关集成 我希望 API 网关返回正确的错误代码 例如 400 404 500 等 API网关模块tf文件 provider aws version lt 2 70 0 region var aws
  • RC4 实现与 openssl 输出不匹配

    我的目标是在 C C 中实现 RC4 流密码 并确保它产生与使用时相同的输出openssl命令 按照伪代码维基百科 https en wikipedia org wiki RC4 该实现似乎有效 因为它可以加密和解密内容 但是 加密的输出与

随机推荐

  • SetCookie 标头未存储

    我目前正在制作一个 Web 应用程序 其中 API 为 Node express js 前端为 Vue js 对于身份验证 我设置了 JWT 并通过 cookie HttpOnly 发送值 SetCookie 位于 Chrome Firef
  • 检测图像中的粗体(和斜体)文本

    我想检测页面图像中粗体 可能还有斜体 文本的延伸 想想 TIFF 或图像 PDF 我需要指向任何可以做到这一点的开源软件 这是一张字典条目的图片 来自 Tzeltal 西班牙语字典 说明了此类文本 第一行是粗体 然后是斜体 然后是 正常 第
  • 在 SVG 中旋转形状时保持旋转线性渐变不旋转

    SVG 或 WPF XAML 我对两者都持开放态度 并且需要 我不认为它们在实现上有任何不同 下面的示例是 SVG 中的 我试图找到一种在线性渐变上使用旋转的方法 在本例中为 270 但是当它填充的形状旋转时 保持线性渐变不变 就好像它填充
  • 反对控制反转容器的争论

    似乎每个人都在转向 IoC 容器 我已经尝试 理解 它有一段时间了 尽管我不想成为高速公路上走错路的司机 但它仍然没有通过我的常识测试 让我解释一下 如果我的论点有缺陷 请纠正 启发我 我的理解 IoC 容器应该让您在组合不同组件时变得更轻
  • 当我定义模板类静态成员时,为什么它不初始化,直到它出现在某些实现中? [复制]

    这个问题在这里已经有答案了 大家好 我写了一个简单的模板 Singleton 类 如下所示 template
  • Angular 2 Final - 以编程方式更改 URL 上的路由参数

    假设我实际上是页面 结果 http server results dateFrom 03 11 2016 page 1 http server results dateFrom 03 11 2016 page 1 我作为结果页面 我想加载页
  • 使用 Boost.Spirit 编译一个简单的解析器

    我正在开发的一个简单骨架实用程序的一部分有一个用于触发文本替换的语法 我认为这是一种熟悉 Boost Spirit 的好方法 但模板错误却是一种独特的乐趣 这是完整的代码 include
  • 使用 Google Apps 脚本在 Google 表单中的 multiplechoiceitem 中插入图像

    我需要在多项选择项的每个选项中插入 Google Drive 图像 在检查文档后 该类 addMultipleChoiceItem 不支持该方法 setImage 还有其他方法可以插入 Google Drive 中的图像吗 Example
  • 使用 jQuery .load 时防止滚动到顶部

    我的网站上有三个按钮 当您单击每个按钮时 它们会使用 load 将不同的内容添加到 DIV 中 我遇到的问题是 每当您单击按钮时 它都会将您带回页面顶部 我尝试过使用 PreventDefault 并返回 false 但它对我不起作用 我可
  • 带提示的二分查找

    我有一个简单的std vector包含一些已排序的数字 按升序 我想查找一个元素 到目前为止我使用 return std lower bound vec begin vec end needle Where needle是我寻找的元素 然而
  • 如何在Spring Boot Gradle中指定Launcher?

    Spring Boot中共有三个启动器 JarLauncher PropertiesLauncher WarLauncher 对于可执行jar 默认情况下将使用JarLauncher 现在我想使用 PropertiesLauncher 来代
  • 避免从浏览器控制台修改 Javascript 变量

    我有个问题 我定义了一些全局变量并将其命名为一个名为 app 的对象 例子 window app foo null bar null 好吧 我的想法是 我希望能够通过调用 app foo baz 或 app bar baz 从任何模块修改这
  • 从呈现的视图控制器访问呈现的视图控制器?

    我有一个视图控制器 包含我的菜单 显示在另一个视图控制器 我的应用程序 之上 我需要从呈现的视图控制器 我的菜单 访问呈现的视图控制器 在我的菜单下方 例如访问某些变量或使呈现的视图控制器执行其segues之一 但是 我就是不知道该怎么做
  • Ref 限定成员函数的目的是什么? [复制]

    这个问题在这里已经有答案了 在读的时候http en cppreference com w cpp language member functions http en cppreference com w cpp language memb
  • 如何使用 Jenkinsfile 备份 Jenkins

    如何在不使用插件的情况下使用 Jenkinsfile 进行 Jenkins 作业配置备份 要备份的东西 系统配置 詹金斯 职位配置 我们对插件备份解决方案并不满意 因此我们在 master 上运行一个自由式 shell 步骤作业 通常是不行
  • 如何防止编译器优化掉断点?

    我编写了一个 if 子句来检查是否应该中断程序进行调试 if a lt 0 a a a不应该变成负数 但我发现它确实如此 并且我想中断调试以了解如果发生这种情况它为什么会变成负数 因此我编写了这个 if 子句 在线上a a 我设置了一个断点
  • 在 python 中创建带有工具提示的 pdf

    这是流行且高度赞扬的 Python 副本在 R 中使用工具提示创建 pdf https stackoverflow com questions 4691780 create pdf with tooltips in r 简单的问题 有没有办
  • 将 ASP.NET 验证与 JQuery 结合起来的优雅方式

    如何最好地将 JQuery 与 ASP NET 客户端验证模型结合起来 我通常会避免实现 ASP NET 验证模型 因为它对于我正在做的事情来说总是显得大材小用 对于我现在正在开发的网站 我只是收集非关键用户数据 并且只需要一些基本的验证
  • 如何在 JPQL 中选择多个 count() 选择的总和

    以下 SQL 语句的等效 JQPL 语句是什么 SELECT SELECT COUNT FROM foo SELECT COUNT FROM bar 您可以使用上面提到的查询EntityManager的createNativeQuery h
  • 永久铸造到超类

    If class Car Automobile 我可以 Car toyota new Car Automobile tauto Automobile toyota 但如果我这样做tauto GetType Name仍然会是Car 是否可以执