动态三元运算符

2023-12-02

为什么以及如何在下面的代码中工作

dynamic x = ( c== 'a') ? new D1() :x=  new D2();

但不是这个

dynamic x = ( c== 'a') ? new D1() : new D2();

Code

class Program
    {
        static void Main(string[] args)
        {
            var c = Console.ReadKey().KeyChar;
            dynamic x = ( c== 'a') ? new D1() :x=  new D2();
            x.Print();
            Console.ReadKey();
        }
    }    
    class D1
    {
        public void Print()
        {
            Console.WriteLine("D1");
        }
    }
    class D2
    {
        public void Print()
        {
            Console.WriteLine("D2");
        }
    }

这与动态无关。这是因为在您的情况下,返回类型与 Else 的情况不同。

如果你改写这个语句,你仍然会得到同样的错误。

var x = (c == 'a') ? new D1() : new D2();

但是,如果您编写以下代码,您就会成功。

var c = 'd';
int a = 5;
decimal d = 6m;
decimal x = (c == 'a') ? a : d;

如果您查看收到的错误,它会告诉您同样的事情。

无法确定条件表达式的类型,因为有 “D1”和“D2”之间没有隐式转换

And For 三元运算符

第一个表达式和第二个表达式的类型必须是 相同,或者必须存在从一种类型到另一种类型的隐式转换。

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

动态三元运算符 的相关文章

  • 仅使用扩展方法在 Linq 中进行漂亮、干净的交叉连接 [重复]

    这个问题在这里已经有答案了 可能的重复 使用扩展方法表示的嵌套 from LINQ 查询 https stackoverflow com questions 9115675 nested from linq query expressed
  • 运行 t4 脚本作为 resx 文件的自定义工具

    我有一个资源文件MyResource resx 我想改变MyResource Designer cs文件生成 我有一个 t4 脚本 它接受 resx 文件作为输入并给出结果转换 但是 我必须手动运行此 t4 才能使其工作 我看到 resx
  • 双线性序列给出奇数结果

    我试图让我的表现技能 不存在 达到标准 但在将公式写入代码时遇到了问题 这是我试图将其引用为 转换 为代码的公式 考虑一个序列 u 其中 u 定义如下 号码u 0 1是第一个u 对于每个x in u then y 2 x 1 and z 3
  • 使用 C++ 拆分“[常规设置]”格式的节字符串

    我是 C 新手 我想读取包含部分和键值对的 ini 文件 根据部分 我想读取相应键的值 首先 我想阅读方括号内的部分 请帮忙 谢谢 对于真正的 INI 文件解析 我强烈建议iniparser库 http ndevilla free fr i
  • 如何在线程创建和退出时调用函数?

    include
  • 将 Python 控制台集成到 GUI C++ 应用程序中

    I m going to add a python console widget into a C GUI below some other controls 许多类将暴露给 python 代码 包括一些对 GUI 的访问 也许我会考虑 P
  • Confuser .NET 混淆器。安全吗? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我目前正在开发一个应用程序 其中阻止用户反编译代码非常重要 现在 我意识到 如果由经验丰富的程序员执行 大多数 exe 都是可反编译的
  • StreamReader,C#,peek

    我有一个 StreamReader 它偶尔会检查它是否有更多内容可以从简单的文本文件中读取 它使用 peek 属性 问题是 当我使用 peek 时 位置发生了变化 尽管不应该发生 FileStream m fsReader new File
  • 使用 size_t 值反向遍历向量

    我想以相反的方向遍历向量的值 如您所知 向量的大小为 size t 当我使用以下代码时 for size t r m size 1 r gt 0 r x r f r for size t c r 1 c lt m size c x r m
  • 如何填充两个样条线或直线系列之间的区域

    我有这个Chart 如何填充两个之间的区域Series S0 and S1 说蓝色和黄色Series 为此 我们编写了其中之一Paint事件 这里的ValueToPixelPosition https msdn microsoft com
  • 使用宏计算源文件行数?

    是否可以使用 C C 预处理器将源文件中的行数计算为宏或某种编译时可用值 例如 我可以更换吗MAGIC1 MAGIC2 and MAGIC3在下面 并在使用时以某种方式获取值 4MAGIC3 MAGIC1 can be placed whe
  • ASP.NET MVC 中 ModelState.AddModelError 中的关键参数有什么意义?

    我在我的控制器中添加了验证检查来修改ModelState如果验证失败 例如 private bool ValidateMoney string raw string name decimal min decimal max try var
  • 带有自定义鉴别器的 EntityFramework Code First 继承

    我正在尝试在 EntityFramework Code First 中映射以下继承 public class Member public string ProjectName get set public string AssemblyNa
  • 数组与映射的性能

    我必须循环一个大数组中的元素子集 其中每个元素都指向另一个元素 问题来自于检测大图中的连接组件 我的算法如下 1 考虑第一个元素 2 将下一个元素视为前一个元素所指向的元素 3 循环直到没有发现新元素 4 考虑1 3中尚未考虑的下一个元素
  • TreeView:仅在子节点中存在复选框

    我需要一个树视图控件 根节点没有复选框 只有图像 所有子节点都有一个复选框 图像 C net 2 0 winforms 不是 wpf WinForms树视图默认不支持混合复选框 非复选框节点 您可以在树视图上全局启用复选框 并使用以下命令在
  • 未找到 _sqlite3_open 等符号错误

    您好 我收到此错误 Undefined symbols sqlite3 open referenced from main in ccRlWVer o sqliite3 close referenced from main in ccRlW
  • 为什么调试器只显示数组指针中的一个元素?

    首先 我知道new是执行此操作的 C 方法 我只是表明有不止一种方法可以重现此错误 而且两种方法都令人难以置信的令人沮丧 我有两种形式的源文件 我正在尝试调试另一个编程作业 但我并没有寻求帮助 基本上 我正在尝试重新实施set作为一个类 具
  • 如何在 C# 中以编程方式创建柔和的颜色?

    根据所需的颜色数量均匀分布地生成它们 如果指定的计数为 8 则看起来像这样 List
  • 获取会议组织者邮件地址 EWS API

    我想使用 EWS API 获取会议组织者的邮件地址 目前 我刚刚获得约会项目的一些属性 我听说你可以设置你想要获取哪些属性 我的代码看起来像这样 CalendarView cview new CalendarView start end c
  • 从 STL 列表中删除项目

    我想创建一个函数 如果符合特定条件 则将项目从一个 STL 列表移动到另一个列表 这段代码不是这样做的方法 迭代器很可能会被擦除 函数失效并导致问题 for std list

随机推荐

  • Mac 操作系统、Java 启动画面

    我正在尝试将我的 Java 应用程序迁移到 Mac OS 当应用程序启动时 应该会出现启动画面 当我从终端运行应用程序时 它是这样的 java classpath the right classpath splash images spla
  • 设置选择字段 Symfony FormType 的默认值

    我希望用户选择一种调查问卷类型 因此我设置了一个包含调查问卷类型的选择 类型是从实体加载的QuestionType builder gt add questionType entity array class gt QuizmooQuest
  • 需要 angular2 组件中的节点模块

    我无法弄清楚如何在我的 Angular2 组件中需要节点模块 特别是在我的情况下如何在 Angular2 组件中打开新的电子窗口 我的 component html 有这样的东西
  • 设置 SQLAlchemy 使用 PostgreSQL SERIAL 进行身份生成

    背景 我目前正在开发的应用程序正在从 SQLite3 过渡到 PostgreSQL 所有数据已成功迁移 使用 dump从当前数据库 更改该类型的所有表 CREATE TABLE foo id INTEGER NOT NULL bar INT
  • PHP 获取 / 和 / 之间的 url 结束字符串

    我需要获取 和 之间的url的最后一个字符串内容 例如 http mydomain com get this or http mydomain com lists get this 我需要获取 get this 在 url 中的位置 tri
  • 如何修复 RecyclerView:未连接适配器;跳过布局?

    我已经这样做有一段时间了 但我不断收到错误 E RecyclerView No adapter attached skipping layout 我开始改变一些事情查看个人资料帖子片段在调用 setAdapter 的地方 我没有成功地使其工
  • Python/Pandas 仅将字符串转换为时间

    我在 Python 2 7 中有以下 Pandas 数据框 import pandas as pd trial num 1 2 3 4 5 sail rem time 11 33 11 16 29 05 09 37 56 21 43 31
  • 如何向 AWS 用户授予 Hartl 的 Rails 教程的权限

    我不知道如何 或在哪里 从AWS向用户授予读写权限 以便用户可以在生产环境中的sample app上发布图片 这是第 11 章的最终任务 教程中没有涵盖它 我在任何地方都找不到解决方案 This is carrier wave rb fil
  • 将带有更新触发器的“DateModified”列添加到包含“DateCreated”列的所有表

    我有很多桌子都有 DateCreated 还需要一个列 DateModified column The DateModified 列将需要一个Update插入当前日期的触发器 getdate 进入这个新的 DateModified colu
  • 如何在 Javascript 中编写 1 到 1000 之间的奇数和偶数的脚本?

    我正在研究一本 Javascript 书 其中有已解决的示例 但有一个示例没有解决方案 我想知道该怎么做 在javascript 在浏览器中 中 我应该做的是写1 1000的偶数 完成后写1 1000的奇数 我不知道如何在数字书写之间添加非
  • 黑莓推送通知教程

    我已向 RIM 注册进行推送通知评估 但我找不到实现推送通知的好来源 sdk中有一些示例 但我找不到实现它们的方法 所以 我正在寻找一个很好的教程 在那里我可以找到推送通知服务的逐步实现 RIM 的服务器端示例涉及设置 Web 应用程序容器
  • 如何启用同步而不每隔几秒同步一次

    我使用过 Google 的 Android 开发者文档 http developer android com training sync adapters 创建同步系统 我的应用程序现在在 帐户 下的 Android 设置 中有一个条目 当
  • 读取 pySpark 中的文件范围

    我需要读取 pySpark 中的连续文件 以下内容对我有用 from pyspark sql import SQLContext file events parquet exportDay 2015090 1 7 df sqlContext
  • gs:// 没有 CORS 配置

    我正在尝试在按钮单击事件上从 Firebase 存储中下载文件 但它给了我 Access Control Allow Origin 错误 https firebase google com docs storage web download
  • ajax 如何与 python 一起工作? [关闭]

    很难说出这里问的是什么 这个问题模棱两可 含糊不清 不完整 过于宽泛或言辞激烈 无法以目前的形式合理回答 如需帮助澄清此问题以便重新打开 访问帮助中心 我一直在谷歌上搜索 但不太明白ajax是如何工作的 有人可以解释一下这是如何工作的吗 a
  • 根据线程 ID 过滤 adb logcat 的输出

    我正在使用 adb logcat v threadtime 来获取包含时间和线程 ID 的格式的输出 我想知道是否有一种方法可以根据线程 id tid 过滤输出 我只想从某些线程获取输出 现在我可以获得线程 ID 但不能获取过滤后的输出 T
  • 错误的坐标白色获取项目相对于其父项的真实位置

    我有一个简单的场景 只有 2 个Rectangles 区别在于第一个使用绝对坐标 第二个使用anchors 在这种情况下 两个矩形都放置在同一位置 但我得到的坐标完全不同 import QtQuick 2 4 import QtQuick
  • 获取 SQL Server 表中每列的每个值的计数

    所以我查了一下 这个问题非常相似 但缺少一个关键部分 SQL Server 计算表中每一列中不同值的数量 因此 在这个问题中 他们想要每列的不同计数 我想要做的是获取表中每一列的每个不同值的计数 并且我正在对特定数据库中的所有表执行此操作
  • 如何从 ElasticSearch 中彻底删除某些内容?

    我们使用 ELK 堆栈进行日志记录 我被要求设计一个流程来删除意外记录的敏感信息 现在基于我对 ElasticSearch Lucene 如何处理的阅读删除和更新数据仍在索引中 只是不可用 随着索引合并等 它最终会被清理 是否有一个流程来运
  • 动态三元运算符

    为什么以及如何在下面的代码中工作 dynamic x c a new D1 x new D2 但不是这个 dynamic x c a new D1 new D2 Code class Program static void Main str