1.操作符概览;
2.操作符的本质;
3.操作符与运算顺序
4.操作符详解。
1.操作符概览:
操作符(Operator)也译为”运算符”
操作符是用来操作数据的,被操作符操作的数据称为操作数(Operand)
表格从上往下优先级递减,同一行运算符的优先级一样一般按从左到右算,
“=”赋值操作符,是先运算右边的值再运算左边的值,所以是最后运算的。
2.操作符的本质
①操作符的本质是函数(即算法)的”简记法”
假如没有发明”+”只有Add函数,算式3+4+5将可以写成Add(Add(3,4),5)
假设没有发明”*”只有Mul函数,那么算式3+4*5将只能写成Add(3,Mul(4,5))
可见有操作符可读性更强。
②操作符不能脱离与它关联的数据类型(比如double数据类型的除法与int类型的除法相同数据结果不同)
可以说操作符就是与固定数据相关联的一套基本算法的简记法。
示例:为自定义的数据类型创建操作符。(格式为把方法名字改为”operator 想要定义的操作符”如:”operator +”)如下例子进一步说明了C#里面的操作符就是方法,也就是函数的一个简记法。
class Person { public string Name; //public static List<Person>GetMary(Person p1, Person p2)(一般方法自定义操作符之前) public static List<Person>operator +(Person p1, Person p2) { List<Person> people = new List<Person>(); people.Add(p1); people.Add(p2); for (int i = 0; i < 11; i++) { Person child = new Person(); child.Name = p1.Name + "&" + p2.Name + "‘s child"; people.Add(child); } return people; } }
3.操作符与运算顺序
①操作符的优先级
可以使用圆括号提高被括起来的表达式的优先级。
圆括号可以嵌套。
不像数学里面有方括号和花括号,在C#语法中”[]”与”{}”有专门的用途。
②同优先级操作符的运算顺序
除了带有赋值功能的操作符,同优先级操作符都是有左到右进行运算,
带有赋值功能的操作符的运算顺序是由右到左(比如赋值运算符”=”),
与数学运算不同,计算机语言的同优先级运算没有”结合率”:
3+4+5只能理解为Add(Add(3,4),5)不能理解为Add(3,Add(4,5)。
操作符详解
4.1基本操作符
①(成员访问操作符)”.”操作符(上表中写为X.Y):四种功能;
*访问命名空间当中的子集命名空间;
*访问名称空间当中的类型;
*访问类型的静态成员(静态成员隶属于类本身故用类可以访问,而用类的对象不能访问类的静态成员);
*访问对象的成员(包括数据成员和方法);
②方法调用操作符”()”即方法后面跟着的那对圆括号(上表写为f(x))。
调用方法一定要加圆括号,但是:
Action myAction = new Action(c.PrintHello);//把PrintHello方法交给委托对象myAction管理
myAction();//这样在委托对象后面加个圆括号就相当于调用了被它管理的方法了,
这个时候PrintHello方法可以不带圆括号。
③元素访问操作符”[]”
int[] myIntArray = new int[13];//创建int数组的实例13个元素
int[] myIntArray2 = new int[]{1,2,3,4,5};//也可以在后面加花括号输入相应值,这对或括号叫做"初始化器",[]里不写数组大小会根据初始化器自动赋值...
myIntArray[0]=2;//访问的是第一个数组元素,访问数组元素,[]里写的是偏移量,从0开始。
Dictionary<string, Student> stuDic = new Dictionary<string, Student>();//一个类名后面,跟着一个尖括号表示这个类是泛型