基于C#方法重载的总结详解

1.首先解释一下什么是方法重载?

方法重载是指在同一个类中方法同名,参数不同,调用时根据实参的形式,选择与他匹配的方法执行操作的一种技术。

这里所说的参数不同是指以下几种情况:

①  参数的类型不同

②  参数的个数不同

③  参数的个数相同时他们的先后顺序不同

注意:系统会认为是同一个方法的两种情况,这样的两个方法不可以在同一个类里,否则系统会报错。

⑴返回类型不同,方法名和参数个数、顺序、类型都相同的两个方法

⑵返回类型相同,方法名和参数的个数、顺序、类型都相同的两个方法,但是参数的名字不同

例如:


代码如下:

① protected  void A(){

Console.WriteLine("aaaaaaaaaaaa"); }

②  protected void A(string s, int a){ //正确的方法重载

Console.WriteLine("ccccccccccc"); }

③  protected void A(string a, int s){

Console.WriteLine("ccccccccccc");

}

④  protected void A(int a,string s) {

Console.WriteLine("bbbbbbbbbb");

}

①  与②是方法重载

②  与③和④比较一下:②与③是同一个方法,因为他们只是参数的名字不同,②与④是正确的方法重载,因为他们参数的顺序不同

2.适用范围:普通方法和构造方法都可以

3.决定方法是否构成重载有以下几个条件:

◆ 在同一个类中;

◆ 方法名相同;

◆ 参数列表不同。

(0)

相关推荐

  • C#通过重写Panel改变边框颜色与宽度的方法

    本文实例讲述了C#通过重写Panel改变边框颜色与宽度的方法.分享给大家供大家参考.具体实现方法如下: using System; using System.Collections.Generic; using System.Text; using System.Runtime.InteropServices; using System.ComponentModel; using System.Windows.Forms; using System.Drawing; namespace Imag

  • C#中重载与重写区别分析

    一.前言        接触面向对象的思想已经有一段时光了,为什么要学习面向对象呢?因为面向对象具有可复用性.可维护性.可扩展性等优点.         本人之前一直接触的是VB语言,所以正式接触面向对象的编程语言还要从C#开始.前段时间,刚学完C#,其中重载.重写傻傻分不清楚.如今通过查阅资料对这两者有了一个大概的理解,不足之处还请多多指教. 二.定义         重载:在同一定义域内(比如一个类里面).方法名相同,参数个数.次序.类型不同.因此重载对返回值没有要求,可以相同,也可以不同.

  • c# 重载WndProc,实现重写“最小化”的实现方法

    code #1 复制代码 代码如下: private void Form1_SizeChanged(object sender, EventArgs e) //最小化隐藏窗体 { if (this.WindowState == FormWindowState.Minimized)//窗体状态为最小化 { StopRectTimer.Enabled = false; this.Visible = false; this.notifyIcon1.Visible = true; //显示系统托盘图标

  • c#方法重写和隐藏的学习示例

    最近正在学习c#,对其中的方法重写和隐藏的概念很是模糊,现在将其归纳如下: 1:方法重写:就是在基类中的方法用virtual关键字来标识,然后在继承类中对该类进行重写(override),这样基类中的方法已经被重写了,已经失去了功能了.当让基类的对象的引用直接指向继承类的对象时(多态性),调用该方法则是调用的继承类的方法. 2:方法隐藏:无论基类中的方法是否用了virtual关键字,继承类中都可以用new关键字(如果不用new的话,不会产生错误,但会生成一个编译警告)将基类中的方法隐藏,所谓隐藏

  • C#中多态、重载、重写区别分析

    本文实例总结了C#中多态.重载与重写的概念与区别.对于初学C#的朋友来说有不错的参考价值.分享给大家供大家参考.具体分析如下: 重写:是指重写基类的方法,在基类中的方法必须有修饰符virtual,而在子类的方法中必须指明override. 格式如下: 1.在基类中: public virtual void myMethod() { } 2.在子类中: public override void myMethod() { } 重写以后,用基类对象和子类对象访问myMethod()方法,结果都是访问在

  • C#运算符重载用法实例分析

    本文实例讲述了C#运算符重载用法.分享给大家供大家参考.具体分析如下: public class Plane { public virtual double TopSpeed() { return 300.0D;} public static bool operator>(Plane one, Plane two) { return one.TopSpeed() > two.TopSpeed(); } public static bool operator<(Plane one, Pla

  • c#重写TabControl控件实现关闭按钮的方法

    1.c#里面的TabControl控件没有关闭按钮,而且很难看. 2.有一些已经做好的第三方控件,但是收费. 3.由于我的故障树推理诊断项目在绘图的时候允许同时打开多个文档进行操作,就要实现类似于浏览器的多标签功能,而且要可以关闭. 4.所以自己写一个类继承TabControl类,然后重写一些里面的方法即可实现. 5.特色:有关闭按钮,标签有背景颜色,选中的标签和没选中的颜色不一样,实现鼠标中键和右键的功能 先看我的项目中的完整代码,有很多代码是我的项目需要,可根据你的项目需求删减,核心的代码后

  • C#中重载相等(==)运算符示例

    运算符重载一直是一个很诡异事情,因为在写代码的时候,不知道某个运算符有没有被重载过.在 C++ 里面,运算符重载可以写在类的外面,当 intellisense 不工作的时候,找到一个运算符的重载函数是一件相当头疼的事情.这个问题在 C# 中改善了不少,因为运算符重载一定要写在类内,而且 intellisense 很强大.不过另一个问题又产生了-- 先来看 C++ 中的"=="重载: struct A{ int x; int y; }; inline bool operator == (

  • C#重载运算符详解

    本文较为详细的描述了重载运算符的方法.一般来说,重载运算符在实际的项目开发中会经常的用到,但如果某些自定义类型通过简短几行代码重载一些常用的运算符(如:+-*/),就能让编程工作带来方便:重载运算符就是告诉编译器+-*/等运算符对于自定义类型进行什么样的操作,在代码中需要注意几点. 一.尽可能的不要改变运算符本身的含义 二.所有的运算符重载都必须声明为public和static 三.不同于扩展方法,所重载的方法必须是在被重载的类型内部,且用关键字operator C#中的两个字符串相加,实际上是

  • 基于C#方法重载的总结详解

    1.首先解释一下什么是方法重载? 方法重载是指在同一个类中方法同名,参数不同,调用时根据实参的形式,选择与他匹配的方法执行操作的一种技术. 这里所说的参数不同是指以下几种情况: ①  参数的类型不同 ②  参数的个数不同 ③  参数的个数相同时他们的先后顺序不同 注意:系统会认为是同一个方法的两种情况,这样的两个方法不可以在同一个类里,否则系统会报错. ⑴返回类型不同,方法名和参数个数.顺序.类型都相同的两个方法 ⑵返回类型相同,方法名和参数的个数.顺序.类型都相同的两个方法,但是参数的名字不同

  • AndroidStudio中重载方法@Override的使用详解

    在我们使用Android Studio时,创建一个类是继承于Android中已有的类时,我们会对原有类中的方法进行重载,Android Studio为我们提供了快捷的插入重载的方法,便于开发.减轻了工作量. 当我们继承一个Android中已有的类时,需要对其函数进行重载只需要点击菜单栏 Code->Override Methods,会跳出可以重载的函数,寻找需要的函数即可. 其中重载函数前都会有@Override标志. public MyService extends Service{ @Ove

  • Java 方法的重载与参数传递详解

    目录 方法重载概述 方法重载特特点 方法重载练习 方法参数传递 方法参数传递(基本类型) 方法参数传递(引用类型) 方法重载概述 方法重载指同一个类中定义的多个方法之间的关系,满足下列条件的多个方法互相构成重载 * 多个方法在同一个类中 * 多个放方法具有相同方法名 * 多个方法的参数不相同,类型不同或数量不同 方法重载特特点 * 重载仅对应方法的定义,与方法的调用无关,调用方法参照标准格式 * 重载仅针对同一个类中方法的名称与参数进行识别,与返回值无关,换句话说不能通过返回值来判断两个方法是否

  • Android Canvas方法总结最全面详解API(小结)

    本篇文章主要介绍了Android Canvas方法总结最全面详解API,分享给大家,具体如下: 常用方法 drawXxx方法族:以一定的坐标值在当前画图区域画图,另外图层会叠加, 即后面绘画的图层会覆盖前面绘画的图层. clipXXX方法族:在当前的画图区域裁剪(clip)出一个新的画图区域,这个 画图区域就是canvas对象的当前画图区域了.比如:clipRect(new Rect()), 那么该矩形区域就是canvas的当前画图区域 getXxx方法族:获得与Canvas相关一些值,比如宽高

  • Spring基于xml文件配置Bean过程详解

    这篇文章主要介绍了spring基于xml文件配置Bean过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 通过全类名来配置: class:bean的全类名,通过反射的方式在IOC容器中创建Bean,所以要求bean中必须有一个无参的构造器. <bean id="helloWorld" class="com.gong.spring.beans.HelloWorld"> <property na

  • 基于MFC实现类的序列化详解

    序列化是将程序中的对象以一种二进制格式存储到存储设备中(例如文本/数据库等),以实现“永生”或随意“流动” 首先定义一个要序列化的类people,其属性有age.weight.height. #pragma once class people { public: int age; int weight; int height; }; 定义好后将该类添加到  项目名view.h  的类中,作为其属性,并且是指针类型 将需要存取的类实现序列化 1.序列化的类必须从CObject派生,或是从CObje

  • 基于angular中的重要指令详解($eval,$parse和$compile)

    在angular的服务中,有一些服务你不得不去了解,因为他可以说是ng的核心,而今天,我要介绍的就是ng的两个核心服务,$parse和$compile.其实这两个服务讲的人已经很多了,但是100个读者就有100个哈姆雷特,我在这里讲讲自己对于他们两个服务的理解. 大家可能会疑问,$eval呢,其实他并不是一个服务,他是scope里面的一个方法,并不能算服务,而且它也基于parse的,所以只能算是$parse的另一种写法而已,我们看一下ng源码中$eval的定义是怎样的就知道了 $eval: fu

  • 基于java servlet过滤器和监听器(详解)

    1 过滤器 1.过滤器是什么? servlet规范当中定义的一种特殊的组件,用于拦截容器的调用. 注:容器收到请求之后,如果有过滤器,会先调用过滤器,然后在调用servlet. 2.如何写一个过滤器? 1.写一个java类,实现Filter接口; 2.在接口方法中实现拦截方法; 3.配置过滤器(web.xml); 3.配置初始化参数 1.配置初始化参数.(init-param) 2.通过filterconfig提供的getinitparamenter方法读取初始化的值. 4.优先级: 当有多个过

  • 基于Java中的StringTokenizer类详解(推荐)

    StringTokenizer是字符串分隔解析类型,属于:Java.util包. 1.StringTokenizer的构造函数 StringTokenizer(String str):构造一个用来解析str的StringTokenizer对象.java默认的分隔符是"空格"."制表符('\t')"."换行符('\n')"."回车符('\r')". StringTokenizer(String str,String delim)

  • 基于Java中字符串内存位置详解

    前言 之前写过一篇关于JVM内存区域划分的文章,但是昨天接到蚂蚁金服的面试,问到JVM相关的内容,解释一下JVM的内存区域划分,这部分答得还不错,但是后来又问了Java里面String存放的位置,之前只记得String是一个不变的量,应该是要存放在常量池里面的,但是后来问到new一个String出来应该是放到哪里的,这个应该是放到堆里面的,后来又问到String的引用是放在什么地方的,当时傻逼的说也是放在堆里面的,现在总结一下:基本类型的变量数据和对象的引用都是放在栈里面的,对象本身放在堆里面,

随机推荐