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://www.mzph.cn/news/679407.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【开源】JAVA+Vue.js实现高校学院网站

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 学院院系模块2.2 竞赛报名模块2.3 教育教学模块2.4 招生就业模块2.5 实时信息模块 三、系统设计3.1 用例设计3.2 数据库设计3.2.1 学院院系表3.2.2 竞赛报名表3.2.3 教育教学表3.2.4 招生就业表3.2.5 实时信息表 四、系…

PyCharm2023.3.2配置conda环境

重点在于Path to conda这一步&#xff0c;需要找到conda.bat这个文件&#xff0c;PyCharm才能识别出现有的conda环境。

Spring Native 解放 JVM

一、Spring Native 是什么 Spring Native可以通过GraalVM将Spring应用程序编译成原生镜像&#xff0c;提供了一种新的方式来部署Spring应用。与Java虚拟机相比&#xff0c;原生镜像可以在许多场景下降低工作负载&#xff0c;包括微服务&#xff0c;函数式服务&#xff0c;非常…

第四节课[XTuner微调]作业

文章目录 前言作业基础作业-XTuner InternLM-Chat 个人小助手认知微调实践 前言 XTuner 做在第三节课LangChain作业之前&#xff0c;因为第三节课没想好找哪个领域&#xff0c;等第三节课作业做了一起部署。 作业 基础作业-XTuner InternLM-Chat 个人小助手认知微调实践 然…

数据采集接口分类:数据采集、数据的采集有哪些?

中国的人工智能会面临着前所未有的发展机遇&#xff0c;她也将会以真正解决人类钢需载入史册&#xff0c;我们也期待着在天津跟在座的各位合作伙伴共同努力&#xff0c;真正的用人工智能建设美好世界。 API接口数据采集 主流电商数据采集 一、 什么是数据采集 确立一个算法模…

什么是Vue样式穿透以及常用的实现方法

在Web前端开发中&#xff0c;样式穿透是一个重要的主题&#xff0c;它可以帮助我们更好地定制化组件样式&#xff0c;提升用户体验。本文将为您介绍Vue中样式穿透的概念&#xff0c;以及几种常用的实现方法&#xff0c;希望对您的前端开发工作有所帮助。 什么是样式穿透&#…

qt学习:串口

头文件 #include <QSerialPort> #include <QSerialPortInfo> 模块 QT core gui serialport 编程步骤 配置一个ui界面&#xff0c;五个QComboBox和一个按钮和一个QTextEdit 添加一个成员 private:QSerialPort *serial; 在构造函数中初始化ui端口列表和…

基于JAVA的中学生家校互联系统 开源项目

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 学生管理模块2.2 课堂表现模块2.3 考试成绩模块2.4 家校留言模块2.5 校园通知模块 三、系统设计3.1 用例设计3.2 实体类设计3.2.1 课堂表现实体类设计3.2.2 考试成绩实体类设计3.2.3 家校留言实体类设计3.2.4 校园通知实…

ORB-SLAM3运行自制数据集进行定位教程

目前手上有一个特定的任务&#xff0c;做应急救援的视觉SLAM&#xff0c;目前公共数据集比较少&#xff0c;考虑自建数据集&#xff0c;从网络上爬虫火灾、地震的等手机录制的视屏&#xff0c;应用一些现有成熟ORB-SLAM3系统到这个数据集上看效果&#xff0c;然后根据效果得到一…

活字格V9 嵌入的html与活字格页面数据交互

不想看分析请直接跳到解决方案 项目场景&#xff1a; 活字格V9 嵌入的html与活字格页面的数据交互&#xff08;传值&#xff09;&#xff0c;嵌入的html用了WebSocket来控制硬件&#xff0c;获取的数据无法回传到活字格页面上&#xff0c;且嵌入的html无法使用活字格内置的js及…

《统计学简易速速上手小册》第9章:统计学在现代科技中的应用(2024 最新版)

文章目录 9.1 统计学与大数据9.1.1 基础知识9.1.2 主要案例&#xff1a;社交媒体情感分析9.1.3 拓展案例 1&#xff1a;电商销售预测9.1.4 拓展案例 2&#xff1a;实时交通流量分析 9.2 统计学在机器学习和人工智能中的应用9.2.1 基础知识9.2.2 主要案例&#xff1a;预测客户流…

python 基础知识点(蓝桥杯python科目个人复习计划38)

今日复习内容&#xff1a;DFS的剪枝 我理解的剪枝&#xff0c;和《运筹学》里面“分支定界法”的剪枝操作一样&#xff0c;不停按照题目所给条件分割&#xff0c;当所得目标函数的值已偏离最优解时&#xff0c;就将其减去。 例题1&#xff1a;数字王国之军训排队 题目描述&a…

2023年度总结 EXI-小洲

2023年度总结 EXI-小洲 文章目录 2023年度总结 EXI-小洲前言一、2023的记录1.1 工作1.2 副业1.2.1 投资1.2.2 接活 1.3 减肥1.4 校园 二、核对2022的flag三、反思四、展望2024 前言 一、2023的记录 1.1 工作 关于目前的工作&#xff0c;我用两个词语来介绍&#xff1a;运气、…

【算法训练营】数字盒子,重编码,成绩排序(python实现)

数字盒子 问题描述 你有一个盒子&#xff0c;你可以往里面放数&#xff0c;也可以从里面取出数。 初始时&#xff0c;盒子是空的&#xff0c;你会依次做 Q 个操作&#xff0c;操作分为两类&#xff1a; 插入操作&#xff1a;询问盒子中是否存在数 x&#xff0c;如果不存在则把数…

【算法系列】隐马尔可夫链预测问题-从维特比到SLAM

前言 视频讲解在我女朋友的B站『隐马尔可夫链预测问题-从维特比到SLAM』 在上一篇文章《终于有人把隐马尔可夫链的前向后向算法讲懂了&#xff01;》中&#xff0c;我们讲解了隐马尔科夫链中三个基本问题中的概率计算问题的前向后向求解方法&#xff1a; 概率计算问题&#x…

Linux---网络套接字

端口号 端口号 端口号是一个2字节16位的整数; 端口号用来标识一个进程, 告诉操作系统, 当前的这个数据要交给哪一个进程来处理; IP地址 端口号能够标识网络上的某一台主机的某一个进程; 一个端口号只能被一个进程占用 在公网上&#xff0c;IP地址能表示唯一的一台主机&…

人工智能如何彻底改变身份欺诈

据 AuthenticID 称&#xff0c;近一半的企业报告合成身份欺诈有所增加&#xff0c;而生物识别欺骗和伪造 ID 欺诈尝试也有所增加。 在当今的数字化存在中&#xff0c;消费者和企业都面临着新的挑战&#xff0c;从考虑数字身份的影响到应对生成人工智能等新工具的使用和流行。与…

【小沐学GIS】基于WebGL绘制三维数字地球Earth(OpenGL)

&#x1f37a;三维数字地球系列相关文章如下&#x1f37a;&#xff1a;1【小沐学GIS】基于C绘制三维数字地球Earth&#xff08;OpenGL、glfw、glut&#xff09;第一期2【小沐学GIS】基于C绘制三维数字地球Earth&#xff08;OpenGL、glfw、glut&#xff09;第二期3【小沐学GIS】…

【C语言】C的整理记录

前言 该笔记是建立在已经系统学习过C语言的基础上&#xff0c;笔者对C语言的知识和注意事项进行整理记录&#xff0c;便于后期查阅&#xff0c;反复琢磨。C语言是一种面向过程的编程语言。 原想在此阐述一下C语言的作用&#xff0c;然而发觉这些是编程语言所共通的作用&#…

一键打造属于自己漏扫系统

0x01 工具介绍 本系统是对Web中间件和Web框架进行自动化渗透的一个系统,根据扫描选项去自动化收集资产,然后进行POC扫描,POC扫描时会根据指纹选择POC插件去扫描,POC插件扫描用异步方式扫描.前端采用vue技术,后端采用python fastapi。 0x02 安装与使用 1、Docker部署环境 编译…