C#使用重载方法实现不同类型数据的计算

目录

一、涉及到的相关知识

1.重载的方法

2.Convert.ToInt32(String)方法

3.判断字符串是否带有小数点

二、实例

1.示例

2.生成成果


一、涉及到的相关知识

1.重载的方法

        重载方法就是方法名称相同,但是每个方法中参数的数据类型、个数或顺序不同的方法。如果一个类中存在两个以上的同名方法,并且方法的参数类型、个数或者顺序不同,当调用这样的方法时,编译器会根据传入的参数自动进行判断,决定调用哪个方法。

2.Convert.ToInt32(String)方法

        将数字的指定字符串表示形式转换为等效的 32 位带符号整数。

public static int ToInt32 (string? value);参数
value    String
包含要转换的数字的字符串。返回
Int32
一个与 value 中数字等效的 32 位带符号整数,如果 value 为 null,则为 0(零)。例外
FormatException
value 不由一个可选符号后跟一系列数字 (0-9) 组成。OverflowException
value 表示小于 Int32.MinValue 或大于 Int32.MaxValue 的数字。

        在C#中,Convert.ToInt32(string)方法用于将字符串转换为整数。如果字符串包含非数字字符,例如小数点,该方法将引发异常。例如,字符串是"123.456",包含非数字字符"."。因此,直接使用Convert.ToInt32(string)会引发异常。

        为了避免异常,可以先使用Decimal.Parse(string)方法将字符串转换为小数,然后再使用Convert.ToInt32(decimal)方法将小数转换为整数。

string str = "123.456";
decimal decimalValue = Decimal.Parse(str);
int intValue = Convert.ToInt32(decimalValue);

        或者,使用string.Split()方法将字符串按指定的分隔符拆分为一个字符串数组。例如,可以使用小数点"."作为分隔符,然后取第一个元素作为整数部分。

string str = "123.456";
string[] parts = str.Split('.');// 如果有小数点,取小数点前面的部分作为整数
// 如果没有小数点,整个字符串就是整数部分
string integerPart = parts.Length > 0 ? parts[0] : str;int intValue = Convert.ToInt32(integerPart);

3.判断字符串是否带有小数点

        使用正则表达式@"^\d+\.\d+$"判断字符串是否含有“.”,然后执行相应操作。

二、实例

1.示例

//重载加法运算
using System.Text.RegularExpressions;namespace _111
{public partial class Form1 : Form{private GroupBox? groupBox1;private GroupBox? groupBox2;private RadioButton? radioButton3;private RadioButton? radioButton2;private RadioButton? radioButton1;private TextBox? textBox1;private Label? label2;private Label? label1;private TextBox? textBox2;private TextBox? textBox3;private Button? button1;private Label? label3;public Form1(){InitializeComponent();StartPosition = FormStartPosition.CenterScreen;Load += Form1_Load;}private void Form1_Load(object? sender, EventArgs e){// // radioButton1// radioButton1 = new RadioButton{AutoSize = true,Location = new Point(11, 17),Name = "radioButton1",Size = new Size(40, 21),TabIndex = 0,TabStop = true,Text = "int",UseVisualStyleBackColor = true};// // radioButton2// radioButton2 = new RadioButton{AutoSize = true,Location = new Point(11, 39),Name = "radioButton2",Size = new Size(90, 21),TabIndex = 1,TabStop = true,Text = "int+double",UseVisualStyleBackColor = true};// // radioButton3// radioButton3 = new RadioButton{AutoSize = true,Location = new Point(11, 61),Name = "radioButton3",Size = new Size(67, 21),TabIndex = 2,TabStop = true,Text = "double",UseVisualStyleBackColor = true};// // label1// label1 = new Label{AutoSize = true,Location = new Point(6, 23),Name = "label1",Size = new Size(44, 17),TabIndex = 0,Text = "加数:"};// // label2// label2 = new Label{AutoSize = true,Location = new Point(6, 53),Name = "label2",Size = new Size(56, 17),TabIndex = 1,Text = "被加数:"};// // textBox1// textBox1 = new TextBox{Location = new Point(56, 17),Name = "textBox1",Size = new Size(91, 23),TabIndex = 2};// // textBox2// textBox2 = new TextBox{Location = new Point(56, 47),Name = "textBox2",Size = new Size(91, 23),TabIndex = 3};// // groupBox1// groupBox1 = new GroupBox{Location = new Point(12, 12),Name = "groupBox1",Size = new Size(153, 92),TabIndex = 0,TabStop = false,Text = "数据运算"};groupBox1.Controls.Add(textBox2);groupBox1.Controls.Add(textBox1);groupBox1.Controls.Add(label2);groupBox1.Controls.Add(label1);groupBox1.SuspendLayout();// // groupBox2// groupBox2 = new GroupBox{Location = new Point(171, 12),Name = "groupBox2",Size = new Size(127, 92),TabIndex = 0,TabStop = false,Text = "选择数据类型"};groupBox2.Controls.Add(radioButton3);groupBox2.Controls.Add(radioButton2);groupBox2.Controls.Add(radioButton1);groupBox2.SuspendLayout();// // textBox3// textBox3 = new TextBox{Location = new Point(88, 107),Name = "textBox3",Size = new Size(100, 23),TabIndex = 1};// // button1// button1 = new Button{Location = new Point(223, 107),Name = "button1",Size = new Size(75, 23),TabIndex = 2,Text = "开始计算",UseVisualStyleBackColor = true};button1.Click += Button1_Click;// // label3// label3 = new Label{AutoSize = true,Location = new Point(12, 113),Name = "label3",Size = new Size(68, 17),TabIndex = 3,Text = "运算结果:"};// // Form1// AutoScaleDimensions = new SizeF(7F, 17F);AutoScaleMode = AutoScaleMode.Font;ClientSize = new Size(309, 136);Controls.Add(label3);Controls.Add(button1);Controls.Add(textBox3);Controls.Add(groupBox2);Controls.Add(groupBox1);Name = "Form1";Text = "重载加法运算";groupBox1.ResumeLayout(false);groupBox1.PerformLayout();groupBox2.ResumeLayout(false);groupBox2.PerformLayout();}private void Button1_Click(object? sender, EventArgs e){textBox3!.Text = "";try{if (radioButton1!.Checked){if (!IsDecimalNumber(textBox1!.Text) && !IsDecimalNumber(textBox2!.Text)){textBox3!.Text = Add(Convert.ToInt32(textBox1!.Text), Convert.ToInt32(textBox2!.Text)).ToString();}else{MessageBox.Show("文本内数字不能是小数","警示");}}else if (radioButton2!.Checked){if (!IsDecimalNumber(textBox1!.Text)){textBox3!.Text = Add(Convert.ToInt32(textBox1!.Text), Convert.ToDouble(textBox2!.Text)).ToString();}else{MessageBox.Show("加数不能是小数", "警示");}}else if (radioButton3!.Checked){textBox3!.Text = Add(Convert.ToDouble(textBox1!.Text) ,Convert.ToDouble(textBox2!.Text)).ToString();}}catch { }}public static int Add(int x, int y)//定义一个静态方法Add,返回值为int类型,有两个int类型的参数{return x + y;}public static double Add(int x, double y)//重新定义方法Add,它与第一个方法的返回值类型及参数类型不同{return x + y;}public static double Add(double x, double y)//重新定义方法Add,它与第一个方法的返回值类型及参数类型不同{return x + y;}/// <summary>/// 使用正则表达式判断字符串是否为带小数的数字/// ^\d+\.\d+$ : ^ 表示字符串开始, \d+ 表示一个或多个数字,/// \.? 表示可能存在的小数点, \d+ 表示小数点后面的一个或多个数字,/// $ 表示字符串结束/// </summary>public static bool IsDecimalNumber(string str){return MyRegex().IsMatch(str);}[GeneratedRegex(@"^\d+\.\d+$")]private static partial Regex MyRegex();}
}

2.生成成果

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/2780242.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

2024年湖南省考报名时间及流程,选岗很重要!

注册时间&#xff1a;2024年2月18日9:00-25日17:00 报名时间&#xff1a;2024年2月19日9:00-25日17:00 网上确认时间&#xff1a;2024年2月28日9:00-3月2日24:00 缴费时间&#xff1a;2024年2月28日9:00-3月2日24:00 打印准考证时间&#xff1a;2024年3月11日9:00-15日17:00 考…

Python 中的互斥锁:保护共享资源的利器

Python 作为一门流行的编程语言&#xff0c;广泛应用于各种领域&#xff0c;特别是在多线程编程中。多线程编程可以让程序同时执行多个任务&#xff0c;但也会引发一些问题&#xff0c;比如多个线程同时访问共享资源可能导致数据错误或不一致。为了解决这个问题&#xff0c;Pyt…

2016-2022年哨兵影像的在线底图

有一个欧洲初创公司对哨兵影像进行了去云处理&#xff0c;制作了一个2016年-2022年的全球哨兵底图。目前底图通过wmts发布&#xff0c;可免费使用&#xff0c;无需搭梯子。 该数据的特点是&#xff1a; 很少的云覆盖&#xff0c;较少的条纹&#xff0c;色彩平衡 底图切片的网…

酷开科技荣获“消费者服务之星”称号后的未来展望

恭喜酷开科技荣获2023年第四季度黑猫平台“消费者服务之星”称号&#xff01;这是对酷开科技长期以来坚持用户至上、用心服务的肯定和认可。作为OTT行业的佼佼者&#xff0c;酷开科技一直秉承着“以用户为中心”的服务理念&#xff0c;不断追求卓越品质&#xff0c;为用户提供更…

Jumpserver教程01:部署jumpserver

Jumpserver教程 注&#xff1a; 本教程由羞涩梦整理同步发布&#xff0c;本人技术分享站点&#xff1a;blog.hukanfa.com 转发本文请备注原文链接&#xff0c;本文内容整理日期&#xff1a;2024-02-11 csdn 博客名称&#xff1a;五维空间-影子&#xff0c;欢迎关注 简要说明…

【EAI 019】Eureka: Human-Level Reward Design via Coding LLM

论文标题&#xff1a;Eureka: Human-Level Reward Design via Coding Large Language Models 论文作者&#xff1a;Yecheng Jason Ma, William Liang, Guanzhi Wang, De-An Huang, Osbert Bastani, Dinesh Jayaraman, Yuke Zhu, Linxi Fan, Anima Anandkumar 作者单位&#xff…

视频直播系统架构的设计与实现

视频直播系统作为一种实时性强、用户互动性高的应用&#xff0c;其架构设计至关重要。本文将介绍如何设计和实现一个稳定、高性能的直播系统架构&#xff0c;以提供良好的用户体验和可靠的服务。 1. 系统架构概述 - 介绍视频直播系统的整体架构&#xff0c;包括客户端、服务…

【java】12:封装

面向对象编程三大特征 1.基本介绍 面向对象编程有三大特征&#xff1a;封装、继承和多态。 2.封装介绍 封装(encapsulation)就是把抽象出的数据[属性]和对数据的操作[方法]封装在一起&#xff0c;数据被保护在内部&#xff0c;程序的其它部分只有通过被授权的操作[方法]&am…

MySQL-----DCL基础操作

▶ DCL简介 DCL英文全称是Data ControlLanguage(数据控制语言)&#xff0c;用来管理数据库用户、控制数据库的访问权限。 DCL--管理用户 ▶ 查询用户 use mysql; select * from user; ▶ 创建用户 ▶ 语法 create user 用户名主机名 identified by 密码 设置为在任意主机上访问…

数据库管理-第149期 Oracle Vector DB AI-01(20240210)

数据库管理149期 2024-02-10 数据库管理-第149期 Oracle Vector DB & AI-01&#xff08;20240210&#xff09;1 机器学习2 向量3 向量嵌入4 向量检索5 向量数据库5 专用向量数据库的问题总结 数据库管理-第149期 Oracle Vector DB & AI-01&#xff08;20240210&#xf…

BKP寄存器与RTC实时时钟

BKP寄存器 BKP寄存器简介 BKP&#xff08;Backup Registers&#xff09;备份寄存器 BKP可用于存储用户应用程序数据。当VDD&#xff08;2.03.6V&#xff09;电源被切断&#xff0c;他们仍然由VBAT&#xff08;1.83.6V&#xff09;维持供电。当系统在待机模式下被唤醒&#xf…

烹饪第一个U-Net进行图像分割

今天我们将学习如何准备计算机视觉中最重要的网络之一&#xff1a;U-Net。如果你没有代码和数据集也没关系&#xff0c;可以分别通过下面两个链接进行访问&#xff1a; 代码&#xff1a; https://www.kaggle.com/datasets/mateuszbuda/lgg-mri-segmentation?sourcepost_page--…

知识价值2-什么是IDE?新手用哪个IDE比较好?

IDE是集成开发环境&#xff08;Integrated Development Environment&#xff09;的缩写&#xff0c;是一种软件应用程序&#xff0c;旨在提供集成的工具集&#xff0c;以方便开发人员进行软件开发。IDE通常包括代码编辑器、编译器、调试器和其他工具&#xff0c;以支持软件开发…

使用R语言fifer包进行分层采样

使用R语言fifer包中的stratified()函数用来进行分层采样非常方便&#xff0c;但fifer包已经从CRAN存储库中删除&#xff0c;需要从存档中下载可用的历史版本&#xff0c;下载链接&#xff1a;Index of /src/contrib/Archive/fifer (r-project.org)https://cran.r-project.org/s…

浅谈路由器交换结构

一、路由器技术概述 路由器&#xff08;Router&#xff09;是连接两个或多个网络的硬件设备&#xff0c;在网络间起网关的作用&#xff0c;是读取每一个数据包中的地址然后决定如何传送的专用智能性的网络设备。它能够理解不同的协议&#xff0c;例如某个局域网使用的以太网协议…

【算法】排序详解(快速排序,堆排序,归并排序,插入排序,希尔排序,选择排序,冒泡排序)

目录 排序的概念&#xff1a; 排序算法的实现&#xff1a; 插入排序&#xff1a; 希尔排序&#xff1a; 选择排序&#xff1a; 堆排序&#xff1a; 冒泡排序&#xff1a; 快速排序&#xff1a; 快速排序的基本框架&#xff1a; 1.Hoare法 2. 挖坑法 3.前后指针法 快…

口腔助手|口腔挂号预约小程序|基于微信小程序的口腔门诊预约系统的设计与实现(源码+数据库+文档)

口腔小程序目录 目录 基于微信小程序的口腔门诊预约系统的设计与实现 一、前言 二、系统功能设计 三、系统实现 1、小程序前台界面实现 2、后台管理员模块实现 四、数据库设计 1、实体ER图 2、具体的表设计如下所示&#xff1a; 五、核心代码 六、论文参考 七、最新…

ASP.NET Core Web API 流式返回,实现ChatGPT逐字显示

&#x1f3c6;作者&#xff1a;科技、互联网行业优质创作者 &#x1f3c6;专注领域&#xff1a;.Net技术、软件架构、人工智能、数字化转型、DeveloperSharp、微服务、工业互联网、智能制造 &#x1f3c6;欢迎关注我&#xff08;Net数字智慧化基地&#xff09;&#xff0c;里面…

关于创建vue项目报错command failed: npm install --loglevel error

一、首先 在这个目录下有个文件叫.vuerc 二、其次 进去之后把里面的"useTaobaoRegistry": false,修改下&#xff0c;我之前是true&#xff0c;后来改成了false才成功。

Linux下的多用户管理和认证:从入门到精通(附实例)

Linux操作系统以其强大的多用户管理和认证机制而著称。这种机制不仅允许多个用户同时登录并执行各种任务&#xff0c;还能确保每个用户的数据安全和隐私。本文将通过一系列实例&#xff0c;带你逐步掌握Linux下的多用户管理和认证。 一、Linux多用户管理的基础知识 在Linux中&…