无法确定条件表达式的类型? [复制]

2023-12-04

我刚刚遇到了这个(编写代码来演示“问题”):

public ICollection<string> CreateCollection(int x)
{
    ICollection<string> collection = x == 0 
                                   ? new List<string>() 
                                   : new LinkedList<string>();
    return collection;
}

编译器抱怨:

Fehler CS0173:Der Typ des bedingten Ausdrucks cann nicht bestimmt werden,weil keine implizite Konvertierung zwischen“System.Collections.Generic.List”和“System.Collections.Generic.LinkedList”erfolt。

大致翻译为:

无法确定条件运算符的类型,因为List和LinkedList之间没有隐式转换。

我明白编译器为什么会抱怨,但是嘿,来吧。它试图装傻。我可以看到这两个表达式不是同一类型,但有一个共同的祖先,而且作为奖励,左侧的类型也是一个共同的祖先。我相信编译器也能看到它。如果左侧声明为,我可以理解错误var.

我在这里缺少什么?

Edit:

我接受詹姆斯·冈特的解释。也许只是为了说清楚。我可以很好地阅读编译器规范。我想知道为什么。为什么有人决定以这种方式编写规范?这种设计背后一定有一个原因。根据詹姆斯的说法,设计原则是“没有惊喜”。 CodeInChaos 还解释了如果编译器尝试从共同祖先推导出类型,您可能会遇到什么惊喜。


表达式 (a ? b : c) 必须解析为类型。类型将是 b 或 c 的类型。如果它们不同(并且没有从一种类型到另一种类型的隐式转换),则编译器在编译时不知道这是哪种类型。

你可能会说它应该推断出存在共同的根类型,但总有一个共同的根类型(例如对象)。

一般来说,C# 编译器不会尝试猜测您的意思。如果您想使用公共根类型,请将 b 和 c 转换为该类型。

这种逻辑贯穿于C#的设计始终,偶尔会有点烦人,但是far更多时候它会阻止你犯错误。

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

无法确定条件表达式的类型? [复制] 的相关文章

  • Subsonic 3 ActiveRecord 嵌套选择导致 NotIn 错误?

    我有以下 Subsonic 3 0 查询 其中包含嵌套的 NotIn 查询 public List
  • 使用反射检测属性的访问修饰符类型

    我编写了一些代码来使用反射查看属性 我已经使用反射从类中检索了属性列表 但是我需要查明该财产是公共的还是受保护的 例如 public string Name get set protected int Age get set Propert
  • 具有可导出私钥的证书的“错误密钥”例外

    我正在尝试使用非对称加密来加密然后解密文件 我已经使用 makecert 创建了一个测试证书并将其安装到我的个人本地计算机存储中 将来我必须在多个服务器上安装此证书 这就是为什么我使用 pe 标志创建它 即使用可导出的私钥 证书已成功创建并
  • 上传并 POST 文件到 PHP 页面

    我需要一种上传文件并将其 POST 到 php 页面的方法 php 位于 apache 服务器上 我在我的桌面应用程序中使用这个 C 代码 这是一个c代码的套接字 当我执行程序时 可以得到 文件大小为772906 打开服务器正常 文件大小为
  • 如何将值插入DataGridView单元格?

    I have DataGridView 持有任何DataBase 我想将任何值插入到任何单元格中 并且该值将保存在数据库上 如何做到这一点 在 C 中 提前致谢 您可以按如下方式访问任何 DGV 单元 dataGridView1 Rows
  • 监控 C# 中的特定击键

    I need to write a Windows application which monitors keystrokes regardless of focus When it detects a particular keystro
  • 获取 C# 字符串的非第一个段的快速而巧妙的方法

    I do a split 在一个字符串上 我想拉出返回字符串的第一个元素以获得字符串的其余部分 f e THIS IS AN AMAZING STRING split 我想要得到除了这个之外的所有单词 这是 是一根神奇的绳子 该字符串在第一
  • GSL 中的错误 - 根查找

    大家好 我在让我的程序与 GSL 根查找一起工作时遇到问题 我正在尝试找到我的方程的解 我正在寻找 64 行数据的解决方案 但在某些特定行中 程序无法继续 可能是因为不存在好的解决方案 但我希望程序在找不到解决方案时跳过行 但我的程序有时会
  • QT 和 Crypto++ 以及 /MTd

    我有两个带有 MSVC2013 32 位编译器的 QT 5 5 项目 第一个是 Qt 控制台应用程序 正在使用 crypto 这两个在 pro 文件中 QMAKE CXXFLAGS RELEASE MT QMAKE CXXFLAGS DEB
  • 为什么要关闭 System.Diagnostics 跟踪自动刷新?

    在我所有的应用程序中 我总是设置
  • 计算数组中共线的三元组的数量

    我被问到这个面试问题 C 算法 但不知道如何解决 给定一个包含 N 个不同点的笛卡尔坐标的数组 Arr N 计算三元组 Arr P Arr Q Arr R 的数量 使得 P 有任何想法吗 我可以为此使用什么算法 以下内容可能没有优化 但其复
  • TextBlock 中的 C# 超链接:单击它时没有任何反应

    在我的 C 独立应用程序中 我想让用户单击一个链接来启动他们最喜欢的浏览器 System Windows Controls TextBlock text new TextBlock Run run new Run Link Text Hyp
  • 套接字编程指针错误

    我正在尝试学习一些套接字编程 我对 c 也很陌生 并且在创建服务器时遇到了一些问题 我在指针方面遇到问题 当我尝试运行代码时出现的错误是 警告 将 int 传递给 socklen t 类型的参数 又名 unsigned int 会在指针之间
  • 使用 MEF 从 shell 加载棱镜模块视图

    我有一个 shell 项目 它将引导程序中的模块加载到 shell 主视图中的选项卡控件中 我刚刚在选项卡项上实现了一个关闭按钮 现在提出了如何从 shell 重新加载模块视图的问题 尝试使用 moduleManager LoadModul
  • 如何将 CreateThread 用于类成员函数?

    你如何使用CreateThread 创建作为类成员的函数的线程 您需要创建一个静态方法来用作实际的线程启动函数 并将一个指向实例的指针作为lpParameter论证CreateThread 这将被传递给静态方法 该方法可以将其转换为对象指针
  • 在哪里可以找到 GLIBCXX_3.4.29?

    我将 GCC 编译器从 GIT 存储库更新到版本 11 现在我的测试代码 GoogleTest GoogleMock 抱怨找不到 GLIBCXX 3 4 29 这不是重复的 请重新打开答案发布于 更详细地了解 gcc 版本和 GLIBC G
  • 在哪里可以找到好的 C++ 源代码? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在学习 C 作为第一语言 我觉得如果我不尽快开始查看实际代码 我的学习就会达到天花板 我不是通过课
  • FileSystemWatcher - 事件未第二次触发

    我有一个应用程序启动其他应用程序 然后等待它们创建特定的数据文件 它一次监视一个应用程序 每次启动应用程序时 它都会监视特定目录以查找要创建的特定文件 我正在使用 FileSystemWatcher 来执行此操作 将其设置为目录 然后过滤出
  • 如何创建一个包含自身列表的结构?

    我想创建一个结构 其中包含相同结构的列表 如下所示 include
  • QObject* 列表的内存管理导致 QML 中出现“无法读取 null 的属性 X”错误

    我需要创建动态列表QObject 代表自定义模型 并将它们暴露给 QML 问题是 QML 尝试重新使用之前删除的QObject 这最终会在运行时出现错误 qrc MyWidget qml 6 TypeError Cannot read pr

随机推荐

  • 在可可中使用结构列表有意义吗?

    这个问题由此衍生one 在 cocoa 中使用结构列表并不简单 要么使用NSArray并进行编码 解码 要么使用C类型数组并失去NSArray的商品 结构应该很简单 但是当需要列表时 人们倾向于构建一个类 什么时候在可可中使用结构列表才有意
  • Angular 4 路由器在 routerLink 导航上附加组件而不是销毁它们

    当从子模块内从子路由导航到另一个同级子路由时 路由器不会销毁前一个组件 而是在向前和向后导航时附加新组件 为什么会发生这种情况 开始于 subscriber lookup 搬到 subscriber register route a Sub
  • 如何在 R 中抓取 JSP 页面?

    我想在 R 中抓取以下页面的内容 http directoriosancionados funcionpublica gob mx SanFicTec jsp Ficha Tecnica SancionadosN htm 但是 我无法找到任
  • 如何开发和测试一个发送电子邮件的应用程序(无需用测试数据填充某人的邮箱)? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心以获得指导 我有很多发送电子邮件的应用
  • 有没有类似 python 的交互式 REPL 模式,但适用于 Java?

    有没有类似 python 的交互式 REPL 模式 但适用于 Java 例如 这样我就可以输入InetAddress getAllByName localHostName 在一个窗口中 并立即得到结果 而不需要所有这些 public sta
  • 使用 php 客户端使用 Web 服务(Soap)

    我正在尝试为此编写一个客户端网络服务 它使用两层身份验证 一层位于请求标头中 一层用于服务器中的数据访问 这意味着我需要在标头中传递它 这就是我试图做的 class ChannelAdvisorAuth public DeveloperKe
  • 从Python中的单元素字典中提取键名

    如果我知道我的字典总是有一个元素 有没有办法在不通过列表的情况下提取键名称 我目前正在这样做 data foo 1 2 3 key name data keys 0 有没有更有效的技术 迭代字典产生键 Using next iter gt
  • 插件未加载

    这让我抓狂 我检查并重写了很多次代码 仍然不起作用 这里是 http codepen io cwf pen zGBmgm 虽然tablesorter js已加载 tablesorter is undefined 我读了这里所有的问题 但找不
  • lua中通过url下载文件

    Lua初学者在这里 我正在尝试通过 url 加载文件 但不知何故 我太愚蠢了 无法获取此处的所有代码示例来为我工作 如何在 Lua 中下载文件 但在运行时写入本地文件 从给定的url下载文件并将其存储到lua中的给定路径 socket re
  • 如何更改可选函数参数的默认值

    我需要更改全局变量S at a py from b py 但它被用作函数中的默认值a py a py S string def f s S print s print S b py import a def main a S another
  • Karate 支持是否在 html 报告中显示传入模拟服务器 API 请求的服务器端场景的断言或失败? [关闭]

    Closed 这个问题需要细节或清晰度 目前不接受答案 这可能是一个愚蠢的问题 或者可能已经得到回答 但我无法找到任何答案 我需要测试向特定端点或消费者发送 API 请求的微服务 我能够使用空手道成功编写模拟 并根据 服务器端 场景中发生的
  • Facebook 应用程序的 Facebook 集成配置错误

    我正在开发在社交网络上共享照片的 iPhone 应用程序 对于照片共享 我使用 Sharekit 我创建了 Facebook 应用程序并使用其 api 密钥和秘密 使用了正确的 api 密钥和秘密 当我尝试与此应用程序共享图像 甚至是简单的
  • Promise 被拒绝后抛出错误 - Q

    以下是使用 Q 的 Promise 的简短示例 这是 test1 js function testDefer var deferred Q defer fs readFile foo txt utf 8 function error tex
  • 如何重定向到servlet中的错误页面?

    我正在编写 servlet 如果出现异常 我将重定向到我的自定义错误页面 因为我已经这样做了 在 web xml 中
  • TCP服务器haskell字符串比较

    我有一个用 Haskell 编写的小型服务器 当我向它发送内容时 它应该评估发送的内容是否与 auth 函数中的密码 password 匹配 但它永远不是 True 我可以看到发送的消息已通过 因为它打印在 putStrLn msg 处 我
  • JavaScript 的“with”语句有合法用途吗?

    艾伦 斯托姆的评论回应我关于with陈述让我思考 我很少找到使用这种特定语言功能的理由 也从未考虑过它可能会带来什么麻烦 现在 我很好奇如何有效地利用with 同时避免其陷阱 你在哪里找到的with声明有用吗 今天我想到了另一个用途 所以我
  • 单一决策和行动陈述的首选风格是什么?

    对于支持不带括号的单一决策和操作的语言 例如以下示例 if var true doSomething 写这个的首选方式是什么 是否应该始终使用括号 还是应该将其使用保留为各个开发人员的偏好 此外 这种做法是否取决于代码块的大小 例如以下示例
  • 在 Spring/J2EE 应用程序中分离只读和读写

    我们在项目中使用 Spring Spring Data 和 JPA 对于生产服务器 我们希望设置数据库集群 以便所有读取查询都定向到一台服务器 所有写入查询都定向到另一台服务器 这显然需要对 DAO 的构建方式进行一些改变 如果到目前为止
  • UIWebview启用cookie

    我正在尝试访问需要 cookie 的特定 URLUIWebView但我无法访问它 因为 cookie 被禁用 所以我做了以下事情 启用cookie NSHTTPCookieStorage cookieStorage NSHTTPCookie
  • 无法确定条件表达式的类型? [复制]

    这个问题在这里已经有答案了 我刚刚遇到了这个 编写代码来演示 问题 public ICollection