网站专题欣赏,陶瓷马赛克 网站建设 中企动力,网站建设方面论文,wordpress 中文转英文js前言
我们知道函数是可以重载的#xff0c;重载后的作用是干嘛呢#xff1f;其实就是为了方便适应不同的参数传递。
那运算符我们也可以理解是一个函数#xff0c;只是我们希望为更多的参数引入运算符使得他们可以被计算。
c#设计这么一块功能#xff0c;其实也是为了方…前言
我们知道函数是可以重载的重载后的作用是干嘛呢其实就是为了方便适应不同的参数传递。
那运算符我们也可以理解是一个函数只是我们希望为更多的参数引入运算符使得他们可以被计算。
c#设计这么一块功能其实也是为了方便我们在某些地方可以更快捷的使用不同的运算符。
概念
让自定义类和结构体能够使用运算符的一种概念。
关键字operator
特点
一定是一个公共的静态方法返回值写在operator前面逻辑自定义
作用让自定义类和结构体对象之间可以进行运算
tips
条件运算符必须成对实现一个运算符可以有多个重载不能使用ref和out
基本语法
public static 返回值类型 operator 运算符(参数列表) 示例和使用
我们在游戏中经常会遇到要进行坐标之间的运算所以这里干脆直接我们就来实现一个坐标之间的运算符重载博主将主要经常用的方法已经给你写好了留下的任务一是让你去体验一下他的整体过程取反的话相对来说复杂一些可以选做。
using System;namespace CoordinateOperatorOverloading
{class Coordinate{public int X { get; set; }public int Y { get; set; }public Coordinate(int x, int y){X x;Y y;}// 重载 运算符public static Coordinate operator (Coordinate c1, Coordinate c2){return new Coordinate(c1.X c2.X, c1.Y c2.Y);}// 重载 - 运算符public static Coordinate operator -(Coordinate c1, Coordinate c2){return new Coordinate(c1.X - c2.X, c1.Y - c2.Y);}// 重载 * 运算符坐标与常数相乘public static Coordinate operator *(Coordinate c, int scalar){return new Coordinate(c.X * scalar, c.Y * scalar);}// 重载 * 运算符常数与坐标相乘public static Coordinate operator *(int scalar, Coordinate c){return new Coordinate(c.X * scalar, c.Y * scalar);}// 重载 运算符前缀public static Coordinate operator (Coordinate c){return new Coordinate(c.X 1, c.Y 1);}// 重载 -- 运算符前缀public static Coordinate operator --(Coordinate c){return new Coordinate(c.X - 1, c.Y - 1);}// 重载 ToString 方法public override string ToString(){return $({X}, {Y});}//任务增加重载比较运算符的方法//选做任务增加取反包括x单独取反y单独取反xy同时取反}class Program{static void Main(string[] args){Coordinate c1 new Coordinate(3, 5);Coordinate c2 new Coordinate(2, 4);Coordinate addition c1 c2;Coordinate subtraction c1 - c2;Coordinate multiplication1 c1 * 2;Coordinate multiplication2 3 * c2;Coordinate increment c1;Coordinate decrement --c2;Console.WriteLine($Addition: {addition});Console.WriteLine($Subtraction: {subtraction});Console.WriteLine($Multiplication1: {multiplication1});Console.WriteLine($Multiplication2: {multiplication2});Console.WriteLine($Increment: {increment});Console.WriteLine($Decrement: {decrement});}}
}
不仅要看懂更要多多去敲代码。
可重载和不可重载的运算符
可重载算术-*/ 逻辑 位| ^ ~ , 条件 需要成对实现 不可重载 || [] () 点 . 三目运算符 ,??
有些运算符你可能没见过可以自己手动查一查。
总结
运算符重载的知识点不算难其实就是记住一个关键词加使用范围就可以了。
这也算核心中补的一个小知识点在未来你对某些复杂结构体之间的计算使用还是有一定的帮助的。
多说无益还是需要脚踏实地。
c#是你学好unity开发的基础。
请期待我的下一篇博客
我来自佑梦游戏开发感谢你的关注和收藏