真的不可能使用返回类型重载吗?

2024-05-18

我用两种方法在MSIL中制作了一个小DLL:

float AddNumbers(int, int)
int AddNumbers(int, int)

你们中有些人可能知道,MSIL 允许您创建具有相同参数的方法,只要您具有不同类型的返回类型(称为返回类型重载)。现在,当我尝试从 C# 使用它时,正如我所期待的那样,它引发了一个错误:

float f = ILasm1.MainClass.AddNumbers(1, 2);

错误是:

以下方法或属性之间的调用是不明确的: 'ILasm1.MainClass.AddNumbers(int, int)' 和 'ILasm1.MainClass.AddNumbers(int, int)'

c#真的无法区分不同的返回类型吗?我知道我无法编写仅具有不同返回类型的方法,但我总是假设它知道如何处理它。


ECMA-334 C# 第 8.7.3 节

方法的签名包括 方法名称和编号, 修饰语及其形式的类型 参数。方法的签名 不包括返回类型。

您可以使用通用方法:

T AddNumbers<T>(int a, int b)
{
   if (typeof(T) == typeof(int) || typeof(T) == typeof(float))
   {
      return (T)Convert.ChangeType(a + b, typeof(T));
   }

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

真的不可能使用返回类型重载吗? 的相关文章

随机推荐

  • * 到底有多慢?

    大家都表示 选择器非常慢 但它到底有多慢呢 我总是试图避免它 但有时它非常有用 例如 h1 margin top 1em 简单来说 通用选择器 速度只与页面上的元素一样慢 Since 从右到左匹配浏览器获取每个元素并将其与所有候选规则进行匹
  • CXF/Jetty 相当于以下 Jersey/Jetty 代码

    我有一些 Jersey 2 7 和 Jetty 9 2 5 v2014112 的测试代码 我正在尝试将其移植到 CXF 3 0 x 和 Jetty 相同版本 有一个部分我无法弄清楚 相当于rc register resource 下面一行
  • 从 Rust 中的函数返回异步函数

    第 1 部分 返回异步函数的函数的签名应该是什么 pub async fn some async func arg str What should be sig here pub fn higher order func action st
  • Alpha 混合红色、蓝色和绿色图像以生成着色为任何 RGB 值的图像?

    基本上 我有一个上下文 我无法以编程方式对图像进行着色 尽管我可以更改它的 alpha 值 通过一些实验 我发现我可以使用特定的 alpha 值对图像的红色 蓝色和绿色版本进行分层 以产生各种颜色 但是我想知道是否可以通过这种方法实现真正
  • Django模型更新或创建具有唯一约束的对象

    有一个模型 class Proxy models Model host models CharField max length 100 port models CharField max length 10 login models Cha
  • Maven:如何使用本地 lib 目录作为依赖项而不是 Maven 存储库

    我在集成测试期间的项目结构如下 Project A conf contains the configuration files lib Contains the all dependencies pom xml target test Co
  • JSON-LD 构建单个对象数组

    有没有办法将单个对象强制放入数组 每次都测试对象类型真的很烦人 我尝试了这个上下文 但它不起作用 还有JSON LD Playground 中的示例 http tinyurl com ph7p35v 通过此上下文 资源将转换为单个对象 而不
  • Android 中的 Sugar ORM:更新 SQLite 中保存的对象

    我是在 Android 上使用 SQLite 和 Sugar ORM 进行应用程序开发的新手 并尝试阅读 Sugar ORM 文档 但没有找到有关如何更新 SQLite 中保存的对象的任何信息 更改对象属性后还可以保存对象吗 就像是 Cus
  • 如何解决 CoreData mogenerator 未找到问题

    我收到如下所示的错误 我不知道我错过了什么 我该如何解决这个问题 如下图所示 Users nischalhada Documents XcodePro mnepalnews revisited 2 0 CoreData mogenerato
  • Grafana:警报查询不支持模板变量

    您好 我想在 grafana 中创建一个简单的警报 以检查过去 5 分钟是否没有数据 但我收到一个错误 警报查询不支持模板变量 嗯 根据这个issue https github com grafana grafana issues 6230
  • Browserify - 如何在浏览器中调用通过 browserify 生成的文件中捆绑的函数

    我是 Nodejs 和 browserify 的新手 我从这个开始link http browserify org 我有文件 main js 其中包含此代码 var unique require uniq var data 1 2 2 3
  • 如何删除 Material React Modal 中的蓝色边框?

    我正在用这个反应材料模态 https material ui com pt components modal 在演示示例中 您可以看到当您打开模式时 有一个蓝色边框 有办法去掉吗 我在 Modal Api 中看到具有该属性disableAu
  • 从 Python 调用 PARI/GP

    我想打电话PARI GP http pari math u bordeaux fr dochtml gpman html仅从Python计算函数nextprime n 对于不同的n是我定义的 不幸的是我无法得到帕里蟒蛇 http code
  • `git Reset HEAD file` 是否也检查该文件?

    我错误地向 git 添加了一个目录 当我按照提示操作时here https stackoverflow com questions 348170 undo git add通过执行以下操作来撤消添加git reset HEAD
  • Scala 中的随机列表[重复]

    这个问题在这里已经有答案了 我对 scala 中的随机播放列表有疑问 使用scala util Random 例如我有 val a cyan val b magenta val c yellow val d key val color Ra
  • 禁止 MATLAB 自动获取焦点[重复]

    这个问题在这里已经有答案了 我有以下问题 在我的 MATLAB 代码中 我使用如下语句 figure 1 更改某些数据的目标数字 问题是 在此 MATLAB 之后 系统将焦点集中在具有该图形的窗口上 当我在后台运行一个大脚本并尝试在计算机上
  • pip:需要将包名称tensorflow-gpu更改为tensorflow

    我正在尝试将具有 GPU 支持的张量流安装到 conda 环境中 我使用命令 pip install ignore installed upgrade https storage googleapis com tensorflow linu
  • 解开 Knuth 的结:如何重构意大利面条式代码?

    这个问题的灵感来自如何将流程图转化为实施 https stackoverflow com questions 36647765它询问如何通过算法消除goto代码中的语句 这answer https stackoverflow com a 3
  • 如何将SQL数据加载到Hortonworks中?

    我已在我的电脑中安装了 Hortonworks SandBox 还尝试使用 CSV 文件 并以表结构的方式获取它 这是可以的 Hive Hadoop nw 我想将当前的 SQL 数据库迁移到沙箱 MS SQL 2008 r2 中 我将如何做
  • 真的不可能使用返回类型重载吗?

    我用两种方法在MSIL中制作了一个小DLL float AddNumbers int int int AddNumbers int int 你们中有些人可能知道 MSIL 允许您创建具有相同参数的方法 只要您具有不同类型的返回类型 称为返回