C#(十七)之C#重载

简介: C#中的重载:包含两个方面,函数重载,运算符重载

QQ图片20220426110546.jpg

C#中的重载:包含两个方面,函数重载,运算符重载


(1):函数重载


最简单的例子就是Console.writeLine即可以打印字符串变量,又能打印整型变量。


class yunsuan {
    // 下边的两个方法除了返回值类型不同之外,其余都相同。
    // 这被称为C#的重载。
   public static int chu(int a,int b) {
        return a / b;
    }
   public static double chu(double a, double b)
    {
        return a / b;
    }
}


(2):构造函数重载


说的实在是高大上,其实就是参数不同


public int age;
    public string name;
    /*构造函数重载*/
    public yunsuan() {
    }
    public yunsuan(int valueAge) {
        age = valueAge;
    }
    public yunsuan(string nameValue,int ageValue) {
        name = nameValue;
        age = ageValue;
    }


(3):运算符重载(重点)


说白了就是重写运算符的功能。


重载运算符由 operator 声明,必须是静态。


class tiji {
            public double length;
            public double width;
            public double height;
            public double getVolume()
            {
                return length * width * height;
            }
            // 重载 + 运算符来把两个 Box 对象相加
            public static tiji operator +(tiji b, tiji c)
            {
                tiji box = new tiji();
                box.length = b.length + c.length;
                box.width = b.width + c.width;
                box.height = b.height + c.height;
                return box;
            }
            public static tiji operator -(tiji a, tiji b)
            {
                tiji box = new tiji();
                box.length = a.length - b.length;
                box.width = a.width - b.width;
                box.height = a.height - b.height;
                return box;
            }
            public static tiji operator *(tiji a, tiji b)
            {
                tiji box = new tiji();
                box.length = a.length - b.length;
                box.width = a.width - b.width;
                box.height = a.height - b.height;
                return box;
            }
            public static tiji operator /(tiji a, tiji b)
            {
                tiji box = new tiji();
                box.length = a.length - b.length;
                box.width = a.width - b.width;
                box.height = a.height - b.height;
                return box;
            }
        }


测试使用代码:


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            /*C#重载*/
            int a, b;
            double c, d;
            a = 25;
            b = 12;
            c = 10;
            d = 4;
            int f = yunsuan.chu(a,b);  // 输出2
            //Console.WriteLine(f);
            double ff = yunsuan.chu(c,d);  // 输出2.5
            //Console.WriteLine(ff);
            string qq = "My Name is ";
            qq = yunsuan.chu(qq);
            //Console.WriteLine(qq);  // 输出My Name Is gc
            yunsuan sd_one = new yunsuan();
            //Console.WriteLine("我叫{0},今年{1}岁", sd_one.name, sd_one.age);  // 我叫,今年0岁
            yunsuan sd_two = new yunsuan(23);
            //Console.WriteLine("我叫{0},今年{1}岁", sd_two.name, sd_two.age); // 我叫,今年23岁
            yunsuan sd_three = new yunsuan("gc",23);
            //Console.WriteLine("我叫{0},今年{1}岁", sd_three.name, sd_three.age); // 我叫gc,今年23岁
            tiji box1 = new tiji();
            tiji box2 = new tiji();
            tiji box3 = new tiji();
            double vol = 0;
            double vols = 0;
            box1.length = 12;
            box1.height = 13;
            box1.width = 14;
            vol = box1.getVolume();
            Console.WriteLine("box1体积是{0}",vol);
            box2.length = 15;
            box2.height = 16;
            box2.width = 17;
            vol = box2.getVolume();
            Console.WriteLine("box2体积是{0}", vol);
            box3 = box2 + box1;
            vols = box3.getVolume();
            Console.WriteLine("box2 + box1的体积是{0}", vols);
        }
        class tiji {
            public double length;
            public double width;
            public double height;
            public double getVolume()
            {
                return length * width * height;
            }
            // 重载 + 运算符来把两个 Box 对象相加
            public static tiji operator +(tiji b, tiji c)
            {
                tiji box = new tiji();
                box.length = b.length + c.length;
                box.width = b.width + c.width;
                box.height = b.height + c.height;
                return box;
            }
            public static tiji operator -(tiji a, tiji b)
            {
                tiji box = new tiji();
                box.length = a.length - b.length;
                box.width = a.width - b.width;
                box.height = a.height - b.height;
                return box;
            }
            public static tiji operator *(tiji a, tiji b)
            {
                tiji box = new tiji();
                box.length = a.length - b.length;
                box.width = a.width - b.width;
                box.height = a.height - b.height;
                return box;
            }
            public static tiji operator /(tiji a, tiji b)
            {
                tiji box = new tiji();
                box.length = a.length - b.length;
                box.width = a.width - b.width;
                box.height = a.height - b.height;
                return box;
            }
        }
        class yunsuan {
            public int age;
            public string name;
            /*构造函数重载*/
            public yunsuan() {
            }
            public yunsuan(int valueAge) {
                age = valueAge;
            }
            public yunsuan(string nameValue,int ageValue) {
                name = nameValue;
                age = ageValue;
            }
            // 下边的两个方法除了返回值类型不同之外,其余都相同。
            // 这被称为C#方法的重载。
            static public int chu(int a,int b) {
                return a / b;
            }
            static public double chu(double a, double b)
            {
                return a / b;
            }
            static public string chu(string b)
            {
                return b + "gc";
            }
        }
    }
}


目录
相关文章
|
3天前
|
编译器 C#
C#重载详解
C#重载详解
9 0
|
3天前
|
C# Python
C# 笔记3 - 重载一系列像python那样的print()方法
C# 笔记3 - 重载一系列像python那样的print()方法
30 1
|
10月前
|
C#
C#基础⑧——方法(函数、重载、out、ref)
比喻成职能。比喻成一个生产自行车老板,一个地方专门放螺丝,一个地方专门放轮,一个地方专门放车链子,需要组装什么就从那个仓库里面拿就行了。各司其职。
|
10月前
|
C#
|
11月前
|
存储 Java C#
【c#入门杂选】重载,继承,委托
【c#入门杂选】重载,继承,委托
79 0
|
C# C++
C# 中多态和重载的区别
一、多态性意味着有多重形式。 在面向对象编程范式中,多态性往往表现为"一个接口,多个功能"。   1 using System; 2 using System.Collections.Generic; 3 using System.
1603 0
|
C#
C#基础知识系列一(goto、i++、三元运算符、ref和out、String和string、重载运算符)
前言   这两天在网上看到的总结很多,尤其是博客园中的,很多很多,也给了我很多的启发,当然自己也总结过,而且有很多人也给与我一些意见和看法。不管怎样,自己还是先把所谓的基础知识加强巩固下吧。   2014年的第一篇博客,希望自己从基础开始。
1160 0
|
C# 数据库 C++
C#属性和静态重载方法简单示例1
这几天在看一本C#和VS2010结合的小书, 可以在约懂懂VS开发C#的东东。 讲得不深,适合我无脑的机械照搬。。 特别是想熟悉一下常用控件和数据库及网络部份。GDI+真的没兴趣呀。 using System; using System.
1003 0
|
C#
[c#]Webservice中如何实现方法重载(overload)以及如何传送不能序列化的对象作参数
1。Webservice中的方法重载问题 (1)在要重载的WebMethod上打个MessageName标签 比如:[WebMethod(MessageName = "HelloWorld1")]public string HelloWorld(){     return "HelloWorl...
832 0