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"; } } } }