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.hqwc.cn/news/465349.html

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

相关文章

导数的几何意义【高数笔记】

1. 高数中的导数几何意义&#xff0c;与中学中斜率的联系 2. 导函数与导数的区别和联系又是什么 3. 导数的几何意义的题型是什么 4. 这些题型又有哪些区别 5. 点在曲线外和点在曲线上&#xff0c;需要注意什么 6. 法线和切线有什么关系 7. 法线是什么

《统计学简易速速上手小册》第6章:多变量数据分析(2024 最新版)

文章目录 6.1 主成分分析&#xff08;PCA&#xff09;6.1.1 基础知识6.1.2 主要案例&#xff1a;客户细分6.1.3 拓展案例 1&#xff1a;面部识别6.1.4 拓展案例 2&#xff1a;基因数据分析 6.2 聚类分析6.2.1 基础知识6.2.2 主要案例&#xff1a;市场细分6.2.3 拓展案例 1&…

git revert回退某次提交

请直接看原文: 【git revert】使用以及理解&#xff08;详解&#xff09;_git revert用法-CSDN博客 -------------------------------------------------------------------------------------------------------------------------------- 前言 试验得知:用Reset HEAD方…

《CSS 简易速速上手小册》第8章:CSS 性能优化和可访问性(2024 最新版)

文章目录 8.1 CSS 文件的组织和管理8.1.1 基础知识8.1.2 重点案例&#xff1a;项目样式表结构8.1.3 拓展案例 1&#xff1a;使用BEM命名规范8.1.4 拓展案例 2&#xff1a;利用 Sass 混入创建响应式工具类 8.2 提高网页加载速度的技巧8.2.1 基础知识8.2.2 重点案例&#xff1a;图…

自然语言处理(NLP)—— 基本概念

自然语言处理&#xff08;Natural Language Processing&#xff0c;简称NLP&#xff09;是人工智能和语言学领域的一个分支&#xff0c;它涉及到计算机和人类&#xff08;自然&#xff09;语言之间的相互作用。它的主要目标是让计算机能够理解、解释和生成人类语言的数据。NLP结…

linux系统下vscode portable版本的c++/Cmake环境搭建001

linux系统下vscode portable版本的Cmake环境搭建 vscode portable 安装安装基本工具安装 build-essential安装 CMake final script code安装插件CMake Tools & cmakeC/C Extension Pack Testsettings,jsonCMakeLists.txt调试和运行工具 CG 目的&#xff1a;希望在获得一个新…

MATLAB知识点: ismember函数 判断数组A中的元素是否在数组B中

​讲解视频&#xff1a;可以在bilibili搜索《MATLAB教程新手入门篇——数学建模清风主讲》。​ MATLAB教程新手入门篇&#xff08;数学建模清风主讲&#xff0c;适合零基础同学观看&#xff09;_哔哩哔哩_bilibili 节选自第3章 3.4.5 集合运算 h ismember(A, B)可以判断数组…

用HTML5 + JavaScript绘制花、树

用HTML5 JavaScript绘制花、树 <canvas>是一个可以使用脚本 (通常为JavaScript) 来绘制图形的 HTML 元素。 <canvas> 标签/元素只是图形容器&#xff0c;必须使用脚本来绘制图形。 HTML5 canvas 图形标签基础https://blog.csdn.net/cnds123/article/details/112…

EasyExcel动态列导出

测试代码地址&#xff1a;https://gitee.com/wangtianwen1996/cento-practice/tree/master/src/test/java/com/xiaobai/easyexcel/dynamiccolumn 官方文档&#xff1a;https://easyexcel.opensource.alibaba.com/docs/2.x/quickstart/write 一、实现方式 1、根据需要导出的列…

Java 基于微信小程序的电子商城购物系统

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝12W、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;…

Java:字符集、IO流 --黑马笔记

一、字符集 1.1 字符集的来历 我们知道计算机是美国人发明的&#xff0c;由于计算机能够处理的数据只能是0和1组成的二进制数据&#xff0c;为了让计算机能够处理字符&#xff0c;于是美国人就把他们会用到的每一个字符进行了编码&#xff08;所谓编码&#xff0c;就是为一个…

测试开发基础 mvn test | 利用 Maven Surefire Plugin 做测试用例基础执行管理

【摘要】 在测试工作场景中&#xff0c;经常会遇到下面的问题&#xff1a;1、执行自动化测试用例的时候&#xff0c;只想指定某个测试类&#xff0c;或者某个方法&#xff0c;又或者某一类用例等&#xff0c;怎么办&#xff1f;2、想要和 Jenkins 一起进行持续集成&#xff0c;…