C# 不通过返回类型推断重载方法

2023-12-11

我正在编写一个 C# 程序来抓取目录并提供最后 CSV 行中的日期小于当前日期的文件列表。由于这是一个程序,因此我并没有真正花费太多时间使代码变得非常干净或任何东西 - 但这只是一个意见问题,我想。

奇怪的是下面的一组代码片段。三个静态方法都在同一个类中。

   public static DateTime dateStringConverter(string mmddyyyy, char delim='/')
    {
            string[] date = mmddyyyy.Split(delim);
            DateTime fileTime = new DateTime(Convert.ToInt32(date[2]), Convert.ToInt32(date[0]), Convert.ToInt32(date[1]));
            return fileTime;
    }

        public static string dateStringGetter()
        {
            string sYear = DateTime.Now.Year.ToString();
            string sMonth = DateTime.Now.Month.ToString().PadLeft(2, '0');
            string sDay = DateTime.Now.Day.ToString().PadLeft(2, '0');
            return sMonth + '/' + sDay + '/' + sYear;
        }

        public static DateTime dateStringGetter()
        {
            string datestring = dateStringGetter();
            return dateStringConverter(datestring);
        }

错误消息显示:

Error   1   Type 'Poller.Program' already defines a member called 
'dateStringGetter' with the same parameter types    

问题方法是 dateStringGetter() 的第二个重载副本,它当然具有与第二个版本(无)相同的参数类型,但具有两个完全不同的返回类型。一个是日期时间,另一个是字符串。具有 DateTime 返回类型的版本(在错误编码的字符串中)调用具有字符串类型的 dateStringGetter() 版本。

这不是很好奇吗? C# 不会仅根据返回类型重载方法吗?我想我已经完成了库的重载,这些库将根据调用自动检测我想要的返回类型——但我不确定。感觉有些不对劲。

所以我认为 C# 不会重载返回类型?


所以我认为 C# 不会重载返回类型?

不,确实不是。返回类型不是签名的一部分。

来自 C# 5 规范的第 3.6 节(重点是我的):

方法的签名由方法的名称、类型参数的数量以及每个形式参数的类型和种类(值、引用或输出)组成,按从左到右的顺序考虑。出于这些目的,出现在形式参数类型中的方法的任何类型参数不是通过其名称来标识,而是通过其在方法的类型参数列表中的序号位置来标识。方法的签名特别不包括返回类型, the params可以为最右边的参数指定修饰符,也可以为可选类型参数约束指定。

and

方法重载允许类、结构或接口声明多个具有相同名称的方法,前提是它们的签名在该类、结构或接口中是唯一的。

另外(为了完整性):

虽然out and ref参数修饰符被视为签名的一部分,在单一类型中声明的成员不能仅因签名而不同ref and out.

抛开其他事情不谈,这个限制有助于提高可读性——有时很难判断正在调用哪个重载,即使它们随参数而变化——如果方法可以按返回类型重载,情况会更糟。在这种情况下,方法重载甚至没有意义,因为它们确实如此相反的事物。仅当所有重载都执行相同的基本任务时,才应重载方法。

附带说明一下,您的方法当前不遵循 .NET 命名约定 - 您应该使用标准格式/解析方法,而不是自行设计。

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

C# 不通过返回类型推断重载方法 的相关文章

  • 将运算符 << 添加到 std::vector

    我想添加operator lt lt to std vector
  • Exit() 时是否调用基本对象析构函数?

    我意识到这个问题已经出现过几次 但我试图获得上述问题的明确答案 但我不断遇到相互矛盾的信息 我需要知道的是 当我使用 exit 时 基本类对象是否被破坏 我知道需要删除动态内存 但我的意思更像是 include
  • 前向声明类型和“已声明为类类型的非类类型”

    我对以下代码有问题 template
  • 如何将 .txt 文件中的数据转换为 xml? C#

    我在一个文本文件中有数千行数据 我想通过将其转换为更容易搜索的内容来轻松搜索 我希望 XML 或其他类型的大型数据结构 尽管我不确定它是否是最好的对于我的想法 每行的数据如下所示 第 31 册 托马斯 乔治 32 34 154 每本书都不是
  • Eigen 和 OpenMP:由于错误共享和线程开销而没有并行化

    系统规格 Intel Xeon E7 v3 处理器 4 插槽 16 核 插槽 2 线程 核心 Eigen 系列和 C 的使用 以下是代码片段的串行实现 Eigen VectorXd get Row const int j const int
  • 什么是空终止字符串?

    它与什么不同标准 字符串 http www cplusplus com reference string string 字符串 实际上只是一个数组chars 空终止字符串是指其中包含空字符的字符串 0 标记字符串的结尾 不一定是数组的结尾
  • 如何使用 ASP.NET Core 获取其他用户的声明

    我仍在学习 ASP NET Core 的身份 我正在进行基于声明的令牌授权 大多数示例都是关于 当前 登录用户的 就我而言 我的 RPC 服务正在接收身份数据库中某个用户的用户名和密码 我需要 验证是否存在具有此类凭据的用户 获取该用户的所
  • 如何将AVFrame转换为glTexImage2D使用的纹理?

    如您所知 AVFrame 有 2 个属性 pFrame gt data pFrame gt linesize 当我从视频 sdcard test mp4 android平台 读取帧后 并将其转换为RGB AVFrame副 img conve
  • 已发布的 .Net Core 应用程序警告安装 .Net Core,但它已安装

    我制作了一个 WPF 和控制台应用程序 供某人在我无法访问的私人服务器上使用 我使用 Visual Studio 2019 的内置 发布向导 来创建依赖于框架的单文件应用程序 当该人打开 WPF 应用程序时 他们会看到标准警告 他们单击 是
  • 如何递归取消引用指针(C++03)?

    我正在尝试在 C 中递归地取消引用指针 如果传递一个对象 那就是not一个指针 这包括智能指针 我只想返回对象本身 如果可能的话通过引用返回 我有这个代码 template
  • 不可变类与结构

    以下是类与 C 中的结构的唯一区别 如果我错了 请纠正我 类变量是引用 而结构变量是值 因此在赋值和参数传递中复制结构的整个值 类变量是存储在堆栈上的指针 指向堆上的内存 而结构变量作为值存储在堆上 假设我有一个不可变的结构 该结构的字段一
  • 模板外部链接?谁能解释一下吗?

    模板名称具有链接 3 5 非成员函数模板可以有内部链接 任何其他模板名称应具有外部链接 从具有内部链接的模板生成的实体与在其他翻译单元中生成的所有实体不同 我知道使用关键字的外部链接 extern C EX extern C templat
  • memcpy/memmove 到联合成员,这是否设置“活动”成员?

    重要说明 一些评论者似乎认为我是从工会抄袭的 仔细看memcpy 它从普通旧地址复制uint32 t 它不包含在联合中 另外 我正在复制 通过memcpy 到工会的特定成员 u a16 or u x in a union 不直接到整个联盟本
  • 如何在 C# 中创建异步方法?

    我读过的每一篇博客文章都会告诉您如何在 C 中使用异步方法 但由于某些奇怪的原因 从未解释如何构建您自己的异步方法来使用 所以我现在有这段代码使用我的方法 private async void button1 Click object se
  • 代码中的.net Access Forms身份验证“超时”值

    我正在向我的应用程序添加注销过期警报 并希望从我的代码访问我的 web config 表单身份验证 超时 值 我有什么办法可以做到这一点吗 我认为您可以从 FormsAuthentication 静态类方法中读取它 这比直接读取 web c
  • 了解 Lambda 表达式和委托 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我已经尝试解决这个问题很长一段时间了 阅读在线博客和文章 但到目前为止还没有成功 什么是代表 什么是 Lambda 表达式 两者的优点
  • 无法将字符串文字分配给装箱的 std::string 向量

    这是我的类型系统的简化版本 include
  • 为什么空循环使用如此多的处理器时间?

    如果我的代码中有一个空的 while 循环 例如 while true 它将把处理器的使用率提高到大约 25 但是 如果我执行以下操作 while true Sleep 1 它只会使用大约1 那么这是为什么呢 更新 感谢所有精彩的回复 但我
  • 是否允许全局静态标识符以单个 _ 开头?

    换句话说 可能static 文件范围 全局变量恰好以一个下划线开头 而不会产生与 C 实现发生名称冲突的可能性 https www gnu org software libc manual html node Reserved Names
  • 如何在 C 中将 char 连接到 char* ?

    我怎样才能前置char c to char myChar 我有c值为 A and myChar值为 LL 我怎样才能前置c to myChar使 ALL 这应该有效 include

随机推荐

  • ASP.NET OnError 未捕获 ConfigurationErrorsException

    从链接到 ASP NET 站点的类库中抛出 ConfigurationErrorsException 该站点使用 Global ASAX 错误事件并重写 ASP NET 页面 OnError 受保护方法来记录所有错误 当 Configura
  • Codeigniter 活动记录中 join 返回的自定义对象

    我有这两个数据库表 地点 id name users id位置 ID姓名 我也有User and Location类 它们都扩展Model并包含一些自定义方法 例如 有一个获取全名 方法中的User class 我使用以下代码来加载数据 t
  • 如何将数据从 numpy 数组复制到另一个

    在不修改数组a的地址的情况下 将数据从数组b复制到数组a的最快方法是什么 我需要这个 因为外部库 PyFFTW 使用指向我的数组的指针 该指针无法更改 例如 a numpy empty n dtype complex for i in xr
  • 使用正则表达式搜索单词的开头

    如何编写正则表达式 可以找到以指定字符串开头的所有单词 对于前 a asasasa sasDRasas dr klklkl DR klklklkl Dr klklklkklkl 在这里我想获取所有以dr使用忽略大小写 我尝试过 但所有功能的
  • 如何将Matlab每次启动时的文件夹设置为当前文件夹?

    我想设置文件夹 Users ALJI MATLAB作为 Matlab 的默认当前文件夹 我的意思是每次启动时 Matlab 都应该指向这个文件夹 是否可以 Mac OS X 上有办法吗 我在用Matlab r2009b on Mac OS
  • javascript youtube 像滑块控件

    我有一个关于在浏览器中实现滑块控件的问题 我需要在浏览器中随时间播放数据 我将让一个 Worker 通过调用 REST api 来填充播放缓冲区 然后 UI 线程将消耗缓冲区并向用户回放数据 我想模拟 YouTube 进度 UI 控件 它在
  • 当应用凭据存储在 APK 中时,Firebase 如何防止攻击者访问 Firebase 数据库?

    因为根据多个消息来源 如何避免 APK 文件的逆向工程 不可能阻止应用程序被逆向工程 并且 Firebase 应用程序令牌存储在 APK 源中 攻击者如何不会获取这些凭据并破坏 Firebase 数据库 我担心的是 开发人员在本机应用程序和
  • 使用 dplyr 获得更好的输出——破坏函数和结果

    这是一个长久以来的疑问 但现在我真的要解决这个难题了 我一直在使用 dplyr 我认为它很棒总结变量 但是 我尝试显示数据透视表 但仅取得部分成功 Dplyr 始终报告包含所有结果的单行 有什么烦人的 我必须复制粘贴结果才能出色地组织所有内
  • GNU GAS:标签没有相对引用

    我正在写一个小引导扇区用于学习目的 这是boot S code16 text movw 0xB800 ax 0xB000 is the text screen video memory movw ax es set it as the es
  • 静态变量会阻碍数据缓存吗?

    From 用 C 优化软件 第 7 1 节 静态数据的优点是可以根据需要进行初始化 程序启动前的值 缺点是内存 整个程序执行过程中都会占用空间 即使 变量仅在程序的一小部分中使用 这使得数据 缓存效率较低 的用法static在此例外的是 它
  • 在 CUDA 统一内存多 GPU 或多处理器中使用原子算术运算

    我正在尝试实现一个使用统一内存的 CUDA 程序 我有两个统一的数组 有时它们需要原子更新 下面的问题有针对单 GPU 环境的答案 但我不确定如何扩展问题中给出的答案以适应多 GPU 平台 问题 cudaatomicAdd 示例无法产生正确
  • 爪哇芬威克树

    我尝试用 Java 实现 Fenwick 树 但没有得到预期的结果 这是我的代码 import java io import java util import java math class fenwick1 public static i
  • 需要为python打包jinja2模板

    更新 我提出了一个更好的问题和更好的答案here 我本来打算删除这个问题 但有些答案可能对未来的搜索者有用 我的问题与this 但这个答案很丑陋 需要一个目录结构 包括sharedtemplates templates templates
  • 在触发器中使用插入和删除的表

    我想编写触发器来处理插入和删除的表 我已经编写了插入触发器 CREATE TRIGGER FILL TABLE ON Person FOR INSERT AS DECLARE ID int SELECT ID p ID FROM Perso
  • 如何计算文档中的行数? [关闭]

    Closed 这个问题不符合堆栈溢出指南 目前不接受答案 我有这样的台词 我想知道我实际上有多少台词 09 16 39 AM all 2 00 0 00 4 00 0 00 0 00 0 00 0 00 0 00 94 00 09 16 4
  • C 中的逻辑运算不符合预期

    有人可以解释一下以下代码的功能吗 include
  • 如何在CSS中绘制循环箭头?

    如何使用 CSS 在中心绘制循环箭头和文本 如下图所示 我尝试过创建曲线箭头 但我不知道如何使其看起来像我想要的那样 arrow width 200px height 200px border 6px solid border radius
  • 通过 setup.exe 创建日志的 msiexec 参数不起作用

    我正在尝试从我的安装中获取使用以下命令的日志setup exe 我可以得到一个日志setup exe V l v c temp installlog txt 但我想通过x参数以及获取 额外的调试信息 当我尝试时setup exe V l v
  • 如何根据 swift 3 中的数组选择复选标记?

    我有一个数组 其中选定的名称将被存储并传递到视图控制器之前 当我需要转到上一个视图控制器时 则需要选择先前选择的复选标记 但在这里它启用了最后一个选定的元素 唯一的问题是如果我选择三个 那么它不是选择三个 它只是检查标记最后一个元素 但我需
  • C# 不通过返回类型推断重载方法

    我正在编写一个 C 程序来抓取目录并提供最后 CSV 行中的日期小于当前日期的文件列表 由于这是一个程序 因此我并没有真正花费太多时间使代码变得非常干净或任何东西 但这只是一个意见问题 我想 奇怪的是下面的一组代码片段 三个静态方法都在同一