首页 > 编程语言 >刘铁猛C#学习笔记5 操作符详解1

刘铁猛C#学习笔记5 操作符详解1

时间:2024-02-23 18:57:07浏览次数:25  
标签:刘铁猛 C# 创建 实例 操作符 类型 文档 飞书

   

一.操作符的优先级

此表格中从上往下操作符优先级依次降低,上面的操作符优先级更高,更先运算  

提升优先级的方法

可以通过加圆括号的方式,提高表达式的运算优先级 圆括号可嵌套  

同优先级的运算顺序

同一行操作符运算优先级相同,优先级相同时大部分按照从左向右的顺序依次运算 但带有赋值功能的操作符固定为最晚运算,且同级运算顺序为从右向左 (把右边的值赋给左边)  

常用简写方法

x += y; 等同于 x = x + y; X -= y; 等同于 x = x - y;   例: x += y += z; 因为+=是带有赋值功能的操作符,所以运算顺序是从右到左 先算 y += z 再算 x += y 当x = 100,y= 200 ,z = 300时 X += y += z运算后 结果x = 600,y = 500 , z = 300;  

计算机操作符无结合律

3+4+5 只能理解为Add(Add(3,4),5),不能理解为Add(3,Add(4+5))  

二.操作符的本质

操作符源自数学中的运算符  

操作符的本质是对函数(算法)的简记法

加号“+”可以当作Add函数的简记 乘号“×”是对多次加法的简记  

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

例如程序中整型int的除法,只能得到整数类型int的答案(整除) 而double、float型数据除法得到的就是对应的double、float类型的小数 尤其C#是一种强类型语言  

操作符简单定义

操作符可以说是一种与固定数据类型关联的一套基本算法的简记 可以为为自定义数据类型创建操作符 例:   先创建一个静态方法 暂时无法在飞书文档外展示此内容  

三.用操作符定义和引用方法*

操作符是对方法的简记 所以静态函数”GetMarry”的创建还可以有如下的表示法 暂时无法在飞书文档外展示此内容 引用方法时写为: 暂时无法在飞书文档外展示此内容

四.基本操作符

基本运算符用来组成基本表达式,基本表达式是是最简单的、不能再拆分的,用来组成其他表达式 所以基本运算符优先级最高,最先运算  

1.成员访问操作符“.”

1.用来访问外层命名空间中的子集命名空间 2.用来访问命名空间中的类型 3.用来访问类型中的静态成员 4.用来访问对象的成员  

2.方法调用操作符“f(x)”

与C/C++基本相同 f为函数名 x为参数 即使调用的函数没有参数,也不能省略括号 但在委托中添加方法时,不用写括号    

3.元素访问操作符“[ ]”

访问C#数组

访问数组的元素 C#中的创建数组: 方法1 数组长度: 使用这种方法创建数组,创建后数组内有10个元素,且都会会被设为初始化的默认值0 方法2 初始化器: 编译器会自动数大括号内有几个数,就创建多大容量的数组实例   访问数组元素:同C/C++ 数组的第一个元素下标为0,最后一个元素下标为N-1 数组类型的成员方法中,.Length可以得到数组的长度N 下标超出数组下标范围时编译会报错  

访问C#字典

ex:一个类后面跟着尖括号"< >"说明这个类是泛型类,之后会讲   创建字典并初始化: string为这个泛型类的索引类型,student为泛型类的值类型 可以通过索引找到值(哈希表?) 已知索引,访问值:在方括号中写要访问的索引,在这个例子中索引为string类型  

4.自增自减操作符“++”、“--”

前置自增x++

x++:变量X的值变为X+1,而x++这个表达式的值为X 后置自增操作符是先赋值再自增 x--同理

后置自增++x

赋值运算顺序与前置相反 前置自增操作符是先自增再赋值 --x同理  

5.typeof 查看类型的内部结构

类型的内部结构:metadata,元数据 暂时无法在飞书文档外展示此内容

6.default 获取类型默认值

(1)结构体类型(值类型)

暂时无法在飞书文档外展示此内容

(2)引用类型

暂时无法在飞书文档外展示此内容 引用类型的默认值为NULL

(3)枚举类型

暂时无法在飞书文档外展示此内容 暂时无法在飞书文档外展示此内容 结果为Low 枚举类型的默认值为声明时的第一个值 类似数组的第一个元素   但声明时给枚举类型进行了显性的赋值时 暂时无法在飞书文档外展示此内容 此时打印结果为Mid 声明时进行了赋值时,枚举类型的默认值为赋值为0的值  

7.new 创建实例调用构造器

var关键字

来源于单词Variable ,可变类型 Int x; 显式类型变量 var x; 隐式类型变量 “我给他赋值的时候,程序你自己看着办” x = 100;时,x类型被定为int x = 100f;时,x的类型被定为float C#是强类型语言,var变量的类型一旦被赋值确定,类型就不能再改变 var变量的类型由第一次赋值决定,之后不能再改变  

new操作符主要功能

创建一个类型的实例,并马上调用该类型的实例构造器 暂时无法在飞书文档外展示此内容 还能获得创建的实例的内存地址,并通过“=”赋值给访问这个实例的引用变量  

附加功能

(1)调用实例的初始化器
暂时无法在飞书文档外展示此内容 在大括号内给实例的成员变量初始化赋值,可同时初始化多个成员变量  
(2)同时使用成员访问操作符
暂时无法在飞书文档外展示此内容 可以运行并显示,只是创建的实例因为没有引用变量引用,之后会被C#垃圾收集器销毁 可用于访问一次性对象  
(3)不同new创造实例的例子
string是一个类(class)类型,但使用时不用创建实例 因为string过于常用,是一个基本类型,C#对其开了一个语法糖衣,隐藏了自动的new操作符 手动用new操作符创建实例也是可以的   整型数组 Int [ ] myArray = { 1, 2, 3, 4, }; 整型数组用大括号初始化时,不用new创建实例,这也是一个语法糖衣  
(4)为匿名类型创建实例
暂时无法在飞书文档外展示此内容 即使没有手动创建有名字的类型,这个程序也可以使用 程序会自动创建匿名的、成员包含Name、Age字段的泛型类型 由此可见var关键字在泛型领域可大展拳脚  

危险警告

一旦在一个类中调用了new操作符,会使这个类与用new创建实例的类型产生非常紧密的耦合 (紧耦合) ex:参见【设计模式】-【依赖之路】,可以学习如何将紧耦合变为相对宽松的耦合  

new关键字的其他用途

(1)当作操作符来使用
(2)子类对父类方法的隐藏
暂时无法在飞书文档外展示此内容 new关键字,作为修饰符使用在子类的实例方法前,该方法与父类中的方法头完全一致 此时会隐藏父类的方法,子类用该方法名调用时使用子类自己的方法  

标签:刘铁猛,C#,创建,实例,操作符,类型,文档,飞书
From: https://www.cnblogs.com/jk-2048/p/18030219

相关文章

  • 刘铁猛C#学习笔记6 操作符详解2
    —————基本操作符———————1.checked与unchecked用于检测一个值在内存中是否溢出Checked:告诉编译器要检查溢出Unchecked:告诉编译器不用检查溢出使用在值变量前,若内存溢出,则编译器会出现以下弹窗ex:try与catch(待补充)  Unchecked是C#语言默认采用的模式,......
  • [Rust Unit testing] test should_panic
    structRectangle{width:i32,height:i32}implRectangle{//Onlychangethetestfunctionsthemselvespubfnnew(width:i32,height:i32)->Self{ifwidth<=0||height<=0{panic!("Rectanglewi......
  • 刘铁猛C#学习笔记7 操作符详解3
    1.强制类型转换操作符强制类型转换操作符()intx;strings=(String)x;例1:stringstr1=Console.ReadLine();stringstr2=Console.ReadLine();//使用ReadLine读取到的是两个string类型的数据//如果要进行计算,需要把两个string转换为intintx=Convert.ToInt32(str1)......
  • 基于STM32F407MAC与DP83848实现以太网通讯三(STM32F407MAC配置以及数据收发)
    本章实现了基于STM32F407MAC的数据收发功能,通过开发板的RJ45接口连接网线到电脑,电脑使用Wiershark工具抓包验证。参考文档:DP83848IV英文DP83848EP中文STM32F4xx参考手册一、工程模板以及参考源码的获取工程源码我使用的正点原子的探索者开发板STM32F407(V2)参考源码:正点原子......
  • 刘铁猛C#学习笔记8 表达式、语句1
    表达式1.表达式的定义通用定义:一种专门用来求值的语法实体C#中定义:由一个或多个操作数,零个或多个操作符,功能是求值,求值的结果可能是四类Singlevalue、object、method、namespace(说明至少要有一个操作数,但不一定要有操作符)  C#中表达式值的类型:(1)单值Singlevalue......
  • oracle11g静默安装
    一、先设置swap大小设置方法见另外文档:(21条消息)Linux系统设置swap大小_Tyler唐的博客-CSDN博客_linuxswap设置多大二、准备静默安装Oracle2.1创建Oracle用户(ROOT用户下)/usr/sbin/groupadd-g501oinstall/usr/sbin/groupadd-g502dba/usr/sbin/groupadd-g503oper/usr/......
  • css 动画
    <divclass="quan-box">逐渐放大消失<div>  /*申明一个div的class用于执行动画*/.quan-box{opacity:0;background:#70D97C;position:absolute;//3秒执行完成quan动画,infinite动画会无限次重复播放,steps(40)表示将整个动画过程分割成40个......
  • Anaconda的安装&基本使用
    一.下载&安装ANACONDA下载进入Anaconda官网下载AnacondaIndividualEdition,这是一个完全免费的软件。安装右击安装包,以管理员身份运行;Next;agreeLicenseAgreement;这里选择AllUsers(所有用户安装):设置安装路径,注意路径中尽量不要出现中文:这个地方......
  • linux(ubuntu22.04)+PicGo(gui版)+阿里云oss搭建图床教程
    linux(ubuntu22.04)+PicGo(gui版)+阿里云oss搭建图床教程资源库PicGo下载链接:山东镜像源github原版阿里云oss链接linux下PicGo(gui版)的安装从资源库链接里下载后缀为.AppImage的安装包,版本可以选择稳定版2.3.1也可以用更新的beta版。修改文件权限,打开文......
  • Cursor 介绍与基础生成用法
    Cursor介绍与基础生成用法实验介绍Cursor是一款与OpenAI合作并且基于GPT-4的新一代辅助编程神器,国内直接可以访问,它可以根据你的输入和需求自动生成代码片段,还可以帮助你重构、理解和优化代码,提高开发效率。在本节课程中,我们将介绍Cursor的基本使用方法。知识点Curso......