C#编程-实现函数重载

在这里插入图片描述

在这里插入图片描述

考虑一个示例:您必须编写一个程序来实现计算器的功能。计算器执行各种运算,例如数字的加、减及乘等。可以对任何类型的数据执行这些运算。这是否意味着您必须定义单独的函数名(如addInteger、addFloat和addDoublie)对每种此类数字执行加法运算?答案是不需要。您可以通过使用函数重载的概念来使用同一函数名对所有类型的数据执行加法运算。

函数重载是实现多态性的最常用方式。您可以通过在类中定义两个或更多同名函数来实现函数重载。但是,函数的每个定义必须在其函数签名中不同。以下代码显示了函数重载的用法:

	using System;
	namespace CalculateMax
	{
		class CalculateMax
		{
			public int Max(int number1, int number2)
			{
				if(number1 > number2)
				{
					return number1;
				}
				else
				{
					return number2;
				}
			}
			public float Max(float number1,float number2)
			{
				if( number1 > number2 )
				{
					return number1;
				}
				else
				{
					return number2;
				}
			}
		}
		class MaxCalc
		{
			static int Main(string[] args)
			{
				CalculateMax calc = new CalculateMax();
				Console.WriteLine("{0}",calc.Max(5.4F,8.6F));
				//Both function calls differ
				Console.WriteLine("{0}",calc.Max(19,12));
				//only in their parameters
				Console.ReadLine();
				return 0;
			}
		}
	}

在上述代码中,Max()方法啊显示了两个数number1和number2中最大的一个数字。Max()方法通过传递整数和浮点值给它来重载。

下图显示了上述代码的输出。

在这里插入图片描述
除了函数重载,您也可以重载构造函数。

小问题:
以下哪个选项表示函数重载?(选择所有使用的项)
a.void Dispaly(int x, int y, float z){ }
void Display( int x, int y){ }
b.int Display ( int x ){ }
void Display( int x ){ }
c.float Display( float x, int y){ }
float Display( int x,float y){ }
d.void display( float x, int y){ }
void Display( int x, float y){ }
答案:
a.void Dispaly(int x, int y, float z){ }
void Display( int x, int y){ }
c.float Display( float x, int y){ }
float Display( int x,float y){ }

实现函数重载

构造函数是特殊类型的方法,因此也可被重载。重载构造函数在C#中常用于在创建对象时提供灵活性。

以下代码显示重构函数的用法:

	using System;
	class CalculateNumber
	{
		private int number1, number2, total;
		//Default constructor
		public CalculateNumber()
		{
			number1 = number2 = total = 0;
		}
		public CalculateNumber(int num1,int num2)  /*Two-argument constructor */
		{
			number1 = num1;
			number2 = num2;
			total = 0;
		}
		public void AddNumber()
		{
			total = number1 + number2;
		}
		public void DisplayNumber()
		{
			Console.WriteLine("The sum of two numbers is {0}",total);
		}
	}
	class CalNum
	{
		static int Main(String[] args)
		{
			//Default constructor invoked
			CalculateNumber cal1 = new CalculateNumber();
			//Parametric constructor
			CalculateNumber cal2 = new CalculateNumber(4,3);
			cal1.AddNumber();  //add() invoked to calculate sum of members
			cal1.DisplayNumber();
			cal2.AddNumber();  //add() invoked to calculate sun of members
			cal2.DisplayNumber();
			return 0;
		}
	}

在上面的代码中,为对象call调用默认构造函数,因为它未使用任何参数创建。为cal2对象调用带参数化构造函数,因为它使用参数创建。

下图显示了上述代码的输出。
在这里插入图片描述

小问题:
以下哪个关于构造函数的语句时正确的?(选择所有使用的项)
a.构造函数不能被重载
b.如果没有为类提供构造函数,则编译器创建和执行默认构造函数。
c.不能显示调用构造函数
d.构造函数不能返回值
答案:
b.如果没有为类提供构造函数,则编译器创建和执行默认构造函数。
c.不能显示调用构造函数
d.构造函数不能返回值

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

VMware VCP+VCAP持续通过

稳定通过,安全可靠

LOG滤波器原理探究---计算机视觉和特征检测

先来看几个滤波器公式: 高斯滤波器: G ( x , y ; σ ) 1 2 π σ 2 e − x 2 y 2 2 σ 2 G(x,y;\sigma) \frac{1}{2 \pi \sigma^2} e^{-\frac{x^2 y^2}{2\sigma^2}} G(x,y;σ)2πσ21​e−2σ2x2y2​ 图像的二阶导数: ∇ 2 f ∂ 2 f ∂…

看图识熊(二)

使用Tools for AI封装onnx模型并推理 进行这一步之前,请确保已正确安装配置了Visual Studio 2017 和 Microsoft Visual Studio Tools for AI环境。 项目的代码也可以在这里找到,下面的步骤是带着大家从头到尾做一遍。 界面设计 创建Windows窗体应用(…

ssm基于Java Web的怀旧唱片售卖系统论文

摘 要 传统办法管理信息首先需要花费的时间比较多,其次数据出错率比较高,而且对错误的数据进行更改也比较困难,最后,检索数据费事费力。因此,在计算机上安装怀旧唱片售卖系统软件来发挥其高效地信息处理的作用&#x…

k8s集群部署Harbor镜像仓库

部署k8s集群参考 https://blog.csdn.net/m0_59933574/article/details/134936188?spm1001.2014.3001.5502https://blog.csdn.net/m0_59933574/article/details/134936188?spm1001.2014.3001.5502 安装Harbor 准备一台干净服务器,关闭防火墙与selinux 下载dock…

探索 2024 年:未来可能带来的新奇事物

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…

XML技术分析02

一、XML——树形结构 <?xml version"1.0" encoding"ISO-8859-1"?><note><to>George</to><from>John</from><heading>Reminder</heading><body>Dont forget the meeting!</body> </note…

LeetCode 42:接雨水

一、题目描述 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图&#xff0c;计算按此排列的柱子&#xff0c;下雨之后能接多少雨水。 示例 1&#xff1a; 输入&#xff1a;height [0,1,0,2,1,0,1,3,2,1,2,1] 输出&#xff1a;6 解释&#xff1a;上面是由数组 [0,1,0,2,1,0,…

LeetCode刷题--- 不同路径 II

个人主页&#xff1a;元清加油_【C】,【C语言】,【数据结构与算法】-CSDN博客 个人专栏 力扣递归算法题 http://t.csdnimg.cn/yUl2I 【C】 ​​​​​​http://t.csdnimg.cn/6AbpV 数据结构与算法 ​​​http://t.csdnimg.cn/hKh2l 前言&#xff1a;这个专栏主要讲述动…

Simply主题 简约风格的Emlog博客模板 响应式布局

主题介绍 Simply是一款简约风格的Emlog博客模板&#xff0c;响应式布局、界面简单大方&#xff0c;实用性强&#xff01; 支持夜间模式&#xff0c;采用localStorage存储配置。IOS系统下支持随系统自动切换浅/深色模式。 文章页支持显示文章字数及阅读时间。 支持http/https …

书摘:C 嵌入式系统设计模式 06

本书的原著为&#xff1a;《Design Patterns for Embedded Systems in C ——An Embedded Software Engineering Toolkit 》&#xff0c;讲解的是嵌入式系统设计模式&#xff0c;是一本不可多得的好书。 本系列描述我对书中内容的理解。本文章描述原书第 2 章的内容。 作为嵌入…

BetaFlight开源代码之电压校准

BetaFlight开源代码之电压校准 1. 源由2. 分析数据流3. 采样电路3. 原理4. 示例5. 实测&转换数据6. 参考资料 1. 源由 既然复杂的BetaFlight开源代码之电流校准都过了一遍&#xff0c;电压相对来说是比较简单的&#xff0c;一起过一下 2. 分析数据流 电源路径1》采样电路…

Pix2Seq 算法阅读记录

目录 前向传播过程 训练过程&#xff1a; 网络结构 前向传播过程 batch_preds--> tgt-->tgtcat(tgt, padding)-->tgt_embedding-->tgt_mask,tgt_padding_mask 以NLP的角度&#xff0c;tgt 代表了 词汇表的长度&#xff0c;encoder部分直接对图像进行处理&#…

优势演员-评论家算法 A2C

优势演员-评论家算法 A2C 优势演员-评论家算法 A2C主要思想目标函数 优势演员-评论家算法 A2C 前置知识&#xff1a;演员-评论家算法&#xff1a;多智能体强化学习核心框架 主要思想 AC 网络结构&#xff1a; 策略网络 - 演员: 这个网络负责根据当前的状态选择动作。它输出的是…

LabVIEW在指针式仪表读数中的应用

在LabVIEW环境中&#xff0c;为实现指针式仪表的自动读数&#xff0c;首先进行图像预处理&#xff0c;包括图像缩放、灰度化和二值化&#xff0c;以提高处理速度和减少噪声干扰。利用LabVIEW的图像处理功能&#xff0c;灰度化和二值化操作简化了图像的色彩信息&#xff0c;便于…

Java HashMap 面试题(一)

HashMap 面试题&#xff08;一&#xff09; 文章目录 HashMap 面试题&#xff08;一&#xff09;3.3 面试题-说一下HashMap的实现原理&#xff1f;面试题-HashMap的put方法的具体流程hashMap常见属性源码分析 3.3 面试题-说一下HashMap的实现原理&#xff1f; HashMap的数据结…

Mongodb删除操作中字符序对结果的影响

本文还是要从删除操作的语法说起。 db.collection.deleteMany(<filter>,{writeConcern: <document>,collation: <document>,hint: <document|string>} ) 删除语法中&#xff0c;可以指定数据写入策略&#xff0c;字符序和使用的索引字段。 字符序&a…

2024--Django平台开发-Web框架和Django基础(二)

day02 Web框架和Django基础 今日概要&#xff1a; 网络底层引入&#xff0c;到底什么是web框架&#xff1f;常见web框架对比django快速上手&#xff08;创建网站&#xff09;常见操作&#xff1a;虚拟环境、django项目、多app应用、纯净版逐点剖析&#xff1a;路由、视图、模…

mysql的分页查询

我们来看下一段查询&#xff1a; select * from sys_role; 如果我们要进行分页查询&#xff0c;例如每页显示两条数据&#xff0c;我们可以利用 limit 关键字&#xff1a; select * from sys_role limit 0,2; select * from sys_role limit 2,2; 假设我们当前页面为 n&#xf…

机器学习--ROC AUC

参考 机器学习-ROC曲线 - 知乎 (zhihu.com)https://zhuanlan.zhihu.com/p/347470776一文看懂ROC、AUC - 知乎 (zhihu.com)https://zhuanlan.zhihu.com/p/81202617 在了解之前&#xff0c;我们先来认识一下以下的概念 针对一个二分类问题&#xff0c;将实例分成正类(postive)或…