隐式运算符是否比 ToString() 方法具有更高的优先级? [复制]

2023-12-22

考虑以下代码:

public class Test
{
    public static implicit operator int(Test t) { return 42; }
    public override string ToString() { return "Test here!"; }
}

var test = new Test();
Console.WriteLine(test); // 42
Console.WriteLine((Test)test); // 42
Console.WriteLine((int)test); // 42
Console.WriteLine(test.ToString()); // "Test here!"

为什么在前三种情况下我们有答案42即使我们明确地转换为Test?
Does implicit运算符具有更高的优先级ToString() ?


是的。隐式运算符优先于显式运算符。语言规范规定隐式运算符不应丢失信息,而显式运算符则允许这样做。例如,参见MSDN明确 http://msdn.microsoft.com/en-us/library/z5z9kes2.aspx。如果你改变关键词implicit to explicit你会看见Test here!3次,42次。

public class Test
{
    public static explicit operator int(Test t) { return 42; }
    public override string ToString() { return "Test here!"; }
}

var test = new Test();
Console.WriteLine(test); // "Test here!"
Console.WriteLine((Test)test); // "Test here!"
Console.WriteLine((int)test); // 42
Console.WriteLine(test.ToString()); // "Test here!"
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

隐式运算符是否比 ToString() 方法具有更高的优先级? [复制] 的相关文章

随机推荐

  • 在 Backbone.js 中处理视图和模型对象

    在不需要时处置模型 视图实例的最有效方法是什么 通常 我将所有逻辑放在控制器 路由器中 它决定应该创建什么视图以及应该向它们提供什么模型 通常 有一些处理程序函数 对应于不同的用户操作或路由 每次执行处理程序时我都会创建新的视图实例 当然
  • dplyr 中波浪号和点符号的含义

    Summary我正在读一本article https dplyr tidyverse org articles colwise html关于 dplyr 的跨函数的主题 看第一个使用示例 我看到了以前从未见过的运算符的使用 我不知道它们是否
  • VisNetwork 与 Shiny 的点击事件

    我已经使用 Shiny 中的 visNetwork 包构建了我的网络 我想单击一个节点 然后显示数据框中有关该节点的信息 我已经能够使用单击和近点函数对散点图执行此操作 例如此处显示的 Shiny 示例中的函数 http shiny rst
  • 我可以在 C 程序中使用 cstdio 吗?

    当我添加时 我在 cstdio 中收到大量错误 include
  • 订购 ObservableCollection 而不创建新的 [重复]

    这个问题在这里已经有答案了 我有以下代码来重新订购ObservableCollection
  • 如何合并嵌套字典?

    我有一个嵌套字典 python 3 9 列表 看起来像这样 records Total Owner Available 15 to 34 years 1242 Total Owner Available 35 to 64 years 569
  • Keras 中的指标是如何计算的?

    我想知道 Keras 如何计算一个指标 是否是自定义指标 例如 假设我有以下指标 它产生预测与真实情况之间的最大误差 def max error y true y pred import keras backend as K return
  • 多个 uniqid() 调用不唯一

    我有一个有趣的例子 其中多次重复调用uniqid 当本地托管在 XAMPP 上时 不会生成唯一的编号 这个唯一的 ID 会重复 5 到 20 次 然后就会神秘地发生变化 然而 作为一个有趣的转折 该代码可以工作完美在我们的生产服务器上 这就
  • Chrome 扩展如何基本上 cURL 其他页面? [复制]

    这个问题在这里已经有答案了 我正在考虑编写一个 Chrome 扩展程序 需要在某个网站的某个动态页面上抓取一些链接并分析链接页面的内容 实际上 我对编写浏览器扩展了解不多 所以在我致力于学习如何编写之前 我想看看它是否可行 我确实知道扩展通
  • Python 描述符中实例和所有者的用途是什么?

    我正在尝试理解 Python 中的描述符 我似乎无法理解描述符方法中的实例和所有者是什么 object get self instance owner 现在我已经阅读了文档 https docs python org 3 reference
  • 在 Ruby 中如何测试一个值是否为素数?有简单的方法和困难的方法吗?

    我正在尝试创建一个程序来测试某个值是否为素数 但我不知道如何进行 这是我的代码 class DetermineIfPrime def initialize nth value nth value nth value primetest en
  • 如何配置 Visual Studio 2013 以与 Git/SourceTree 一起使用

    我希望能够将 Git 与 Visual Studio 2013 一起使用 我也希望能够使用 SourceTree 但我不知道两者如何一起使用 我在 Visual Studio 中创建了一个项目 并将其配置为使用 Git 但我不知道存储库是在
  • javascript 中的范围表现得很奇怪

    对象通过 JavaScript 中的引用传递 意味着该对象从任何地方发生的变化都应该得到反映 在本例中 console log a 的预期输出为 function change a b a x added a b assigning a a
  • 基于管道分隔列创建新的 pandas 列并可能重复

    这个问题与我之前的问题的良好解决方案有关 基于 Pandas 中的管道分隔列创建多个新列 https stackoverflow com questions 48010030 create multiple new columns base
  • 如何(轻松)删除 Xcode 6 中 Interface Builder 中的约束

    假设您已选择一个对象 并且 实用程序 面板中的 大小选择器 已打开 您可以看到应用于对象的约束列表 在约束列表中 您可以单击小齿轮并选择删除 在 Xcode 6 中不能 IB中删除约束还有几种方法 在文档大纲中找到约束并以这种方式将其删除
  • SQLAlchemy ORM __init__ 方法与

    In the SQLAlchemy ORM 教程 http docs sqlalchemy org en latest orm tutorial html以下代码作为将映射到表的类的示例 gt gt gt from sqlalchemy i
  • 如何在 Laravel 中创建两种类型的用户

    我想问一下如何在laravel中创建两种类型的用户 我有两张桌子 一张给顾客 一张给客户 我的问题是如何发挥这种作用 我是否必须制作两个不同的模型或使用模型 User 并在中间件中制作一些功能 谢谢 如果您正在寻找最简单的解决方案 您可以添
  • 另一个与Cross-XHR相关的

    我知道有很多关于 Access Control Allow Origin 不允许 的问题 错误 但我尝试过其中一些但没有成功 一些约会 我正在尝试构建一个 dev tools tab 扩展 我可以像这样触摸 flickr API这个例子 h
  • 为什么我不能运行两个 mysqli 查询?第二个失败[重复]

    这个问题在这里已经有答案了 是否可以像这样有两个 mysqli 查询 mysqli query dblink INSERT INTO images project id user id image name date created lin
  • 隐式运算符是否比 ToString() 方法具有更高的优先级? [复制]

    这个问题在这里已经有答案了 考虑以下代码 public class Test public static implicit operator int Test t return 42 public override string ToStr