------------恢复内容开始------------

一、操作符概览

1、概念

  • 操作符(Operator)也称“运算符”
  • 操作数:是用来操作数据的,被操作符操作的数据称为操作数(Operand)

2、C#中的操作符

  • 注:
    • 优先级:从上往下优先级递减
    • 同级情况下
      • 一般情况下,从左到右
      • 赋值操作符顺序最晚,顺序从右向左

二、操作符的本质

1、本质是函数(算法)的“简记法”

  • 计算机中的操作符来源于数学中的运算符,本质都是为了简记
    • 例如:3+3+3+3 ---> 3*4
    • 增加了可读性,也更加简单
  • 操作符就是对函数(算法)的简记
    • 例如:Add(Add(3,4)5) ---> 3+4+5
    • 好处一眼就能看出来

2、操作符不能脱离与它关联的数据类型

  • 操作符毕竟不是运算符,它和数学中还是有很多区别,其中最显著的就是:
    • 计算机中的操作符不能和相关联的数据类型脱离
  • 例如:
    • int类型的5/4,结果是1(整型的除号,进行的是整除)
    • double类型的5/4,结果是1.25(double的除号,是做浮点除法)
  • 回顾数据类型的定义中的一句话:每一种数据类型都有和它相关的操作符

3、示例:自定义类型,并为其定义操作符

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace CreatOperator
{
class Program
{
static void Main(string[] args)
{
Person person1 = new Person();
Person person2 = new Person();
person1.Name = "Wanda";
person2.Name = "Vision";
List<Person> nation = person1 + person2;
//等价于:List<Person> nation = Person.GetMarry(person1, person2);
foreach (var p in nation)
{
Console.WriteLine(p.Name);
}
}
} class Person
{
public string Name;
public static List<Person>operator +(Person p1, Person p2)
//此处自定义了操作符 +
//等价于:public static List<Person> GetMarry(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 + "and" + p2.Name + "'s child";
people.Add(child);
}
return people;
}
}
}

三、操作符的优先级

  • 优先级顺序已经在本节课开头给出参考图
  • 关于括号
    • 可以用圆括号来改变优先级
    • 圆括号可以嵌套
    • 方括号和花括号不能改变优先级,在编程语言中是有专门的用途的
      • [] 方括号:用来访问索引器
      • {} 花括号:用来包括各种语句体

四、同级操作符的运算顺序

1、同级运算顺序:

    • 除去不带赋值功能的操作符,从左到右
    • 带赋值功能的操作符,从右到左

2、计算机同级运算没有结合律

  • 前边说过,计算机的操作符虽然来自于数学的运算符,但是还是有区别的,很值得注意的一点就是,计算机同级运算符之间没有结合律。
  • 因为编译器理解的时候只有一种方式:运算符优先级+同级运算顺序(从左往右或从右往左)
    • 例如:3+4+5
    • 只能理解为:Add(Add(3 , 4 )5)
    • 不能理解为:Add(3 , Add( 4, 5))

五、操作符引用详解

typeof() 它其实是一个运算符(操作符)

能够获取指定类型的对象信息。返回的是Type对象。这样就可以通过类对象获取其他信息。如类的是不是抽象类,位于哪个程序集,类型的信息,方法有哪些,属性有哪些,字段有哪些。运算符 之所以能够动态推断类型是因为c#有一个c语言没有的东西 叫做元数据

-delegate操作符

在匿名方法中做操作符

【C#基础概念】操作符的更多相关文章

  1. js基础概念-操作符

    操作符是操作数据值的符号,也叫做运算符. 按照操作个数分为:一元运算符,二元运算符,三元运算符. 按功能分为:位操作符,布尔操作符,乘性操作符,加性操作符,关系操作符,关系操作符,相等操作符,条件操作 ...

  2. JavaScript随笔记(一)基础概念以及变量类型

    一.JavaScript中的基础概念 1.defer属性 一般我们在引用外部js文件的时候往往是将引用文件的位置放在标签当中,比如那么在标签中引入多个js文件时,浏览器会按照引入顺序加载执行这些引入的 ...

  3. JavaScript--我发现,原来你是这样的JS(基础概念--躯壳,不妨从中文角度看js)

    介绍 这是红宝书(JavaScript高级程序设计 3版)的读书笔记第二篇(基础概念--躯壳篇),有着部分第三章的知识内容,当然其中还有我个人的理解.红宝书这本书可以说是难啃的,要看完不容易,挺厚的, ...

  4. JavaScript--我发现,原来你是这样的JS(基础概念--灵魂篇,一起来学js吧)

    介绍 这是红宝书(JavaScript高级程序设计 3版)的读书笔记第三篇(灵魂篇介绍),有着剩下的第三章的知识内容,当然其中还有我个人的理解.红宝书这本书可以说是难啃的,要看完不容易,挺厚的,要看懂 ...

  5. JS--我发现,原来你是这样的JS(三)(基础概念--灵魂篇)

    一.介绍 这是红宝书(JavaScript高级程序设计 3版)的读书笔记第三篇(灵魂篇介绍),有着剩下的第三章的知识内容. 红宝书这本书可以说是难啃的,要看完不容易,挺厚的,要看懂更不容易,要熟练js ...

  6. JS--我发现,原来你是这样的JS(二)(基础概念--躯壳篇--不妨从中文角度看js)

    一.介绍 这是红宝书(JavaScript高级程序设计 3版)的读书笔记第二篇(基础概念--躯壳篇),有着部分第三章的知识内容,当然其中还有我个人的理解. 红宝书这本书可以说是难啃的,要看完不容易,挺 ...

  7. 第214天:Angular 基础概念

    一.Angular 简介 1. 什么是 AngularJS - 一款非常优秀的前端高级 JS 框架 - 最早由 Misko Hevery 等人创建 - 2009 年被 Google 公式收购,用于其多 ...

  8. C#学习基础概念二十五问

    C#学习基础概念二十五问 1.静态变量和非静态变量的区别?2.const 和 static readonly 区别?3.extern 是什么意思?4.abstract 是什么意思?5.internal ...

  9. 【Machine Learning】机器学习及其基础概念简介

    机器学习及其基础概念简介 作者:白宁超 2016年12月23日21:24:51 摘要:随着机器学习和深度学习的热潮,各种图书层出不穷.然而多数是基础理论知识介绍,缺乏实现的深入理解.本系列文章是作者结 ...

随机推荐

  1. gorm概述与快速入门

    特性 全功能 ORM 关联 (Has One,Has Many,Belongs To,Many To Many,多态,单表继承) Create,Save,Update,Delete,Find 中钩子方 ...

  2. golang中的异常处理

    1. defer是go提供的一种资源处理的方式.defer的用法遵循3个原则在defer表达式被运算的同时,defer函数的参数也会被运算.如下defer的表达式println运算的同时,其入参i也会 ...

  3. Go 转义字符及风格

    今天来学习一下Go 中的转义字符,源码注释,规范的代码风格以及标准库API 文档; Go 转义字符常用的转义字符有以下几个:1. \t: 表示一个制表符(tab), 通常可以使用它进行排版; 2. \ ...

  4. 图文并茂理解iptables

    原文地址:http://www.zsythink.net/archives/1199 以下是转载内容: iptables详解:图文并茂理解iptables | 朱双印博客 这篇文章会尽量以通俗易懂的方 ...

  5. 业务驱动的全景监控体系在阿里的应用 | 阿里巴巴DevOps实践指南

    编者按:本文源自阿里云云效团队出品的<阿里巴巴DevOps实践指南>,扫描上方二维码或前往:https://developer.aliyun.com/topic/devops,下载完整版电 ...

  6. alpakka-kafka(9)-kafka在分布式运算中的应用

    kafka具备的分布式.高吞吐.高可用特性,以及所提供的各种消息消费模式可以保证在一个多节点集群环境里消息被消费的安全性:即防止每条消息遗漏处理或重复消费.特别是exactly-once消费策略:可以 ...

  7. APC 篇—— APC 挂入

    写在前面   此系列是本人一个字一个字码出来的,包括示例和实验截图.由于系统内核的复杂性,故可能有错误或者不全面的地方,如有错误,欢迎批评指正,本教程将会长期更新. 如有好的建议,欢迎反馈.码字不易, ...

  8. hashmap 实现 相同的key值时,value值叠加效果。

    一,了解一些基础 package com.ohs.demo; /** * * 一.需求是:停止相同的key值,覆盖效果,将重复的value值,叠加起来. * * 二.hash? 什么是hash? * ...

  9. AT2043 [AGC004C] AND Grid

    首先可以发现一个很简单的想法,因为最外层是一定不会有 \(\#\) 的,所以可以考虑让第一个网格图将每个连通块的最外层包起来,第二个网格图将就选择这个包内部的所有点即可. 但你发现这个想法是很难实现的 ...

  10. eclipse中快捷键中逗号是怎么用的,如ctrl+2,L

    Ctrl +2 同时按下,松开后,再按下L