C#编程-实现函数重载

news2024/9/29 19:23:23

在这里插入图片描述

在这里插入图片描述

考虑一个示例:您必须编写一个程序来实现计算器的功能。计算器执行各种运算,例如数字的加、减及乘等。可以对任何类型的数据执行这些运算。这是否意味着您必须定义单独的函数名(如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.构造函数不能返回值

在这里插入图片描述

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

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

相关文章

扫码支付是怎么工作的?

扫码支付是怎么工作的? 本文转自 公众号 ByteByteGo,如有侵权,请联系,立即删除 过去的几十年,支付技术发生了很大的改变。下图给我们显示了 POS 终端的进化。从一开始的纸钞收银机,到刷卡机,再到…

Python 教程 02:Python 编程环境的搭建与 IDE 的选择

目录 一、搭建 Python 环境 1.1 Python 官网 1.2 下载 Python 1.2.1 选择版本 1.2.2 选择平台 1.2.3 下载安装文件(Windows & macOS) 1.3 安装环境 1.3.1 Windows 平台 1.3.2 macOS 平台 1.3.3 Linux 平台 1.4 验证安装是否成功 二、选择…

OpenHarmony应用构建工具Hvigor的构建流程

前言 OpenHarmony 应用和服务使用 Hvigor 作为工程的构建工具。本篇文章将介绍 Hvigor 的构建流程,通过修改脚本配置使 Hvigor 执行自定义任务。 Hvigor 的构建流程 加载命令行参数和环境变量;初始化项目结构,创建 Project 和 Module 实例…

计算机网络-VLAN原理与配置

之前我们学习了以太网的基础知识,了解了网络交换设备的发展,交换机的工作原理,广播域和冲突域。 一、概述 还简单了解了以太网的CSMA/CD通讯机制,以太网是建立在CSMA/CD (Carrier Sense Multiple Access/Collision Detection&…

C++ 学习笔记之运算符重载+案例

目录 一、C 运算符重载 二、定义一个成员函数或全局函数 三、计算时间 1.计算时间差 2.时间加减 四、一个运算符重载实例 一、C 运算符重载 是一种特性,它允许程序员重新定义已有的运算符的行为,以适应自定义类型的操作。通过运算符重载&#xff0…

java内存屏障

参考:https://blog.csdn.net/weixin_73077810/article/details/132804522 内存屏障主要用于解决线程的可见性、有序性问题 代码案例: ReentrantLock保证可见性的原理 在 lock.lock() 和 lock.unlock() 时,都会操作 AbstractQueuedSy…

UEditor在编辑对齐方式时产生额外空行问题

一、问题描述 一个关于UEditor富文本编辑器的问题:在编辑内容对齐方式后保存后浏览器显示的段落上下会比原先多出一些间距。 下面是对齐编辑后,未保存前的的HTML: 保存后,实际会多出一个段落空行: 二、问题调查 经…

Java多线程技术11——ThreadPoolExecutor类的使用1-备份

1 概述 ThreadPoolExecutor类可以非常方便的创建线程池对象,而不需要程序员设计大量的new实例化Thread相关的代码。 2 队列LinkedBlockingQueue的使用 public class Test1 {public static void main(String[] args) {LinkedBlockingQueue queue new LinkedBlocki…

字节跳动基础架构SRE-Copilot获得2023 CCF国际AIOps挑战赛冠军

近日,2023 CCF国际AIOps挑战赛决赛暨“大模型时代的AIOps”研讨会在北京成功举办,活动吸引了来自互联网、运营商、科研院所、高校、软硬件厂商等领域多名专家学者参与,为智能运维的前沿学术研究、落地生产实践打开了新思路。决赛中&#xff0…

leetcode算法题之记忆化搜索总结

记忆化搜索,可以理解为带备忘录的递归,方便进行剪枝,是一种以空间换时间的策略。 本章目录 1.斐波那契数2.不同路径3.最长递增子序列4.猜数字大小II5.矩阵中的最长递增路径 1.斐波那契数 斐波那契数 class Solution { public://递归int f…

GitEE-GitHub实现加速访问与下载项目

gitee域名:https://gitee.com gitee域名:https://github.com 一、从github导出项目到gitee上面,从而实现加速访问与下载 gitee和github都有同步其他仓库的功能,比如码云上就能直接从github或gitlab中导入; 只需要填…

路由器02_静态路由DHCP

一、静态路由 1、静态路由特点 由管理员手工配置,是单向的,缺乏灵活性 2、默认路由 默认路由是一种比较特殊静态路由,一般用于末节(末梢)网络,直接指定目标为任何地方 二、静态…

墨墨智库正式上线:开启您的AI智慧之旅

在这个由数据驱动的时代,AI技术正迅速改变我们的工作和生活方式。有没有想过一个平台可以为您提供所有AI相关资源的便捷访问?这就是「墨墨智库」的使命。我们非常高兴地宣布,经过精心准备和期待,「墨墨智库」现已正式上线&#xf…

深入理解C指针

深入理解C指针 ​#C语言 #​ #C指针 #​ 1 认识指针 指针:一个存放内存地址的变量 1.1 指针和内存 ​​ ‍ 阅读指针声明时候,可以选择倒过来读,会更容易理解。 指针被赋值为NULL时候,会被解释为二进制0. void指针 具有和…

docker 安装elasticsearch、kibana、cerebro

安装步骤 第一步安装 docker 第二步 拉取elasticsearch、kibana、cerebro 镜像 docker pull docker.elastic.co/elasticsearch/elasticsearch:7.10.2 docker pull docker.elastic.co/kibana/kibana:7.10.2 docker pull lmenezes/cerebro:latest第三步、创建 容器 创建e…

SQL Server从0到1——写shell

xp_cmdshell 查看能否使用xpcmd_shell; select count(*) from master.dbo.sysobjects where xtype x and name xp_cmdshell 直接使用xpcmd_shell执行命令: EXEC master.dbo.xp_cmdshell whoami 发现居然无法使用 查看是否存在xp_cmdshell: EXEC…

深入理解计算机系统(1):开始

计算机系统是由硬件和系统软件组成的,它们共同工作来运行应用程序。虽然系统的具体实现方式随着时间不断变化,但是系统内在的概念却没有改变。所有计算机系统都有相似的硬件和软件组件,它们又执行着相似的功能。 计算机系统 信息就是位上下…

❀记忆冒泡、选择和插入排序算法思想在bash里运用❀

目录 冒泡排序算法:) 选择排序算法:) 插入排序算法:) 冒泡排序算法:) 思想:依次比较相邻两个元素,重复的进行直到没有相邻元素需要交换,排序完成。 #!/bin/bash arr(12 324 543 213 65 64 1 3 45) #定义一个数组 n${#arr[*]} #获取数组…

非工程师指南: 训练 LLaMA 2 聊天机器人

引言 本教程将向你展示在不编写一行代码的情况下,如何构建自己的开源 ChatGPT,这样人人都能构建自己的聊天模型。我们将以 LLaMA 2 基础模型为例,在开源指令数据集上针对聊天场景对其进行微调,并将微调后的模型部署到一个可分享的…

【STM32】STM32学习笔记-定时器定时中断 定时器外部时钟(14)

00. 目录 文章目录 00. 目录01. 定时器中断相关API1.1 TIM_InternalClockConfig1.2 TIM_TimeBaseInit1.3 TIM_TimeBaseInitTypeDef1.4 TIM_ClearFlag1.5 TIM_ITConfig1.6 TIM_Cmd1.7 中断服务函数1.8 TIM_ETRClockMode2Config 02. 定时器定时中断接线图03. 定时器定时中断示例0…