C#基本语法<一>_入门经典
基本信息
CIL和JIT
- CIL通用中间语言
- JIT just-in-time使得CIT代码仅在需要时才编译
程序集
- 包含可执行文件.exe和库函数.dll和资源文件,不必把程序集集中到一个地方,全局程序缓存
- 程序集完全自描述的,逻辑单元而不是物理单元
- 可执行代码和库代码使用相同程序集结构,可执行文件多了一个主程序入口点。
- 程序集的一个重要特征是它们包含元数据描述了对应代码中定义的类型和方法。
CLR
公共语言运行库CLR:包含实时编译器JIT,在程序运行时,JIT编译器会从IL代码生成本地代码,其他部分是垃圾回收器GC,调试器扩展和线程实用工具。垃圾回收器负责回收内存,调试扩展器允许在不同编程语言之间启动调试会话,线程实用工具负责在底层平台创建线程。
- 管理着正在执行的代码包括管理内存,处理安全以及跨语言调试
- 代码托管最重要的是内存回收机制
- winform基于像素
- wpf基于pirectX
CLR执行应用程序之前,编写好源代码都需要编译,编译分为两个阶段
- 将源代码编译成microsoft中间语言IL
- CLR将I编译成平台专用的的本地代码
clr还有一个类型加载器的类型系统,类型加载器负责从程序集中加载类型。
编译过程
- .net兼容语言编写程序,托管语言
- 将代码编译为中间代码CIL,这未必是单文件,可以有多个源代码文件,再把链接带一个程序集中,称之为链接
- 使用JIT编译为本机代码
- 在托管的CLR环境下运行本机代码
基本语法
注释
- /* */和一行//
- ///可以通过配置,将这些注释提取出来组成文档文件
命名空间
代码大纲功能
- #region Using directives
- #endregion,大纲的名字为Using directives
变量
- 先声明后使用
变量初始化:变量是类或结构中的字段,如果没有显式初始化,则创建这些变量时,其默认值就是0.方法的局部变量必须在代码中显示初始化。
整数
- sbyte System.SByte -128~127
- byte System.Byte 0~255
- short System.Int16 -32768~32767
- ushort System.UInt16 0~65535
- int System.Int32 -21亿~21亿
- uint System.UInt32 42亿
- long System.Int64 19位数字
- ulong System.UInt64 20位数字
浮点类型
- 位是最小数据单位,只能表示0-1
- 字节,8个二进制位构成1个字节,是存储空间的基本计量单位,
- 字:由若干字节构成,不同计算机有不同的字长,8位计算机一个字等于一个字节,16位一个字等于两个字节,字是计算机数据处理和运算的单位
- 1kb等于1024个字节
- 1M等于1024KB
- 1G等于1024M
- 1T等于1024G
- float System.Single 4字节
- double System.Double 8个字节
- decimal System.Decimal 16个字节
布尔和文本
- char System.Char Unicode 0~65535 2个字节
- bool System.Boolean 1个字节
- string System.String
转义字符
- ' 单引号 0x0027
- '' 双引号 0x0022
- \ 反斜杠 0x005c
- \0 空 0x0000
- \a 警告 0x0007
- \b 退格 0x0008
- \f 换页 0x000C
- \n 换行 0x0000A
- \r 回车 0x000D
- \t 水平制表符 0x0009
- \v 垂直制表符 0x000B
- @转义字符,避免大量使用\
全局变量:Program.全局变量,在声明变量前要进行初始化
常量:
- 常量必须初始化,指定值后不能更改。
- 常量总是隐式静态的,
值类型和引用类型:值类型存储在栈中,应用类型存储在堆中。值类型和引用类型互换要经过装箱拆箱,在传递函数参数时,值类型会进行复制,而引用相当于传递指针,返回值相同。引用类型由垃圾回收器进行回收,值类型不需要,超出其作用域就会在内存中删除。
ref:如果是结构类型使用ref传递参数,则变成传递引用,但如果是引用类型,即使参数在函数中变化了引用,新的应用还是会传递回去。ref传递的值要先初始化。
out:用法基本和ref一样,但传入的值只需要定义
可空类型:int? 和int,唯一的多开销是一个可以确定它是否为空 的布尔成员,值可以直接转换可空,int?=int;可空转换成值需要强制int=(int)int?;但如果为空会生成一个异常,最好的方法是int=int?.hasvalue?int?.value:-1;可以转换成较短短语int=int??-1
枚举也是值类型:默认情况下,枚举是int,也可以改变成其他整数类型,强制转换将int转换成枚举,当分配给常量是不同位时,flags属性需要枚举设置,获得所有枚举,var day in Enum.GetName(typeof(Color));
结构:值类型,不能继承,每个结构都自动由ValueType派生。
基本运算符
- 一目运算符
- 二目运算符
- =
- +=
- -=
- *=
- /=
- %=
- 运算符优先级
- ++,--(前缀)
C#基本语法<一>_入门经典的更多相关文章
- python入门经典_好资源送不停
Python入门经典(2K超清_送书) https://study.163.com/course/courseMain.htm?courseId=1006183019&share=2& ...
- 正经学C#_介绍与其编写基础:《c#入门经典》
本文所讲内容,均可在<c#入门经典>中可以查询.如有错误,敬请指出.谢谢! C#:全称C Shar.是微软.Net Framework平台下最为主要的客户语言之一.个人理解,c#是微软最为 ...
- 正经学C#_位移与其位移运算符[c#入门经典]
在c#入门经典一书中,最为糟糕的一节就是位移了,完全没有讲明白,也没有说全,似乎只是轻轻点了一下何为位移,带了两次原码和补码,完全不理会是否明白不明白.这一点这本书很差.因为此书说了,在大多数应用开发 ...
- 强烈推荐visual c++ 2012入门经典适合初学者入门
强烈推荐visual c++ 2012入门经典适合初学者入门 此书循序渐进,用其独特.易于理解的教程风格来介绍各个主题,无论是编程新手,还是经验丰富的编程人员,都很容易理解. 此书的目录基本覆盖了Wi ...
- 《c#入门经典第五版》简介及pdf电子书网盘下载地址(收藏)
<C#入门经典(第5版)>全面讲解C# 2010和.net架构编程知识,为您编写卓越C# 2010程序奠定坚实基础.C#入门经典系列是屡获殊荣的C#名著和超级畅销书.最新版的<C#入 ...
- 【推荐图书】+ 基于Nios II的嵌入式SoPC系统设计与Verilog开发实例+C#入门经典等
[推荐图书]+ 基于Nios II的嵌入式SoPC系统设计与Verilog开发实例+C#入门经典等 3赞 发表于 2016/7/4 21:14:12 阅读(1921) 评论(3) 初次接触FPGA,到 ...
- 【C#入门经典视频教程】-第001课-C#入门-认识C#
C#入门-认识C# C ---> C++ --> C# (C++++) j++ j++ 有一门可能比这个C#更流行的语言 java 使用的教程:c#入门经典第五版 操作系统:windows ...
- [转载]HTML5开发入门经典教程和案例合集(含视频教程)
http://www.iteye.com/topic/1132555 HTML5作为下一代网页语言,对Web开发者而言,是一门必修课.本文档收集了多个HTML5经典技术文档(HTML5入门资料.经典) ...
- c语言入门经典(第5版)
文章转载:http://mrcaoyc.blog.163.com/blog/static/23939201520159135915734 文件大小:126MB 文件格式:PDF [点击下载] C ...
随机推荐
- 深度学习优质学习项目大放送!-AI Studio精选开源项目合集推荐
近期 在AI Studio上发现了不少优质的开源深度学习项目,从深度学习入门到进阶,涵盖了CV.NLP.生成对抗网络.强化学习多个研究方向,还有最新的动态图,都以NoteBook的方式直接开源出来,并 ...
- Android Healthd电池服务分析
healthd healthd是安卓4.4之后提出来的,监听来自kernel的电池事件,并向上传递电池数据给framework层的BatteryService.BatteryService计算电池电量 ...
- Linux 使用vi命令的教程
一.首先用vi命令打卡要编辑的文件: 注意:vi命令的使用如下: 打开或新建文件,并将光标至于第一行首:[root@centos6 /]# vi /etc/my.cnf 打开文件,并将光标移至最后一行 ...
- 【机器学习实战】计算两个矩阵的成对距离(pair-wise distances)
矩阵中每一行是一个样本,计算两个矩阵样本之间的距离,即成对距离(pair-wise distances),可以采用 sklearn 或 scipy 中的函数,方便计算. sklearn: sklear ...
- 非常详细的 (VMware安装Centos7超详细过程)
本篇文章主要介绍了VMware安装Centos7超详细过程(图文),具有一定的参考价值,感兴趣的小伙伴们可以参考一下 1.软硬件准备 软件:推荐使用VMwear,我用的是VMwear 12 镜像:Ce ...
- 【性能测评】DSP库,MDK5的AC5,AC6,IAR和Embedded Studio的三角函数性能
测试条件: 1.IAR8.30开最高等级速度优化. 2.MDK5.27正式版使用AC5开最高等级优化3,开启时间优化,测试C标准库和微库MicroLib两种. 3.MDK5.27正式版使用AC6开最高 ...
- vue组件之间的通信方式
组件之间的通信方式有很多种 这里分享4种组件之间的通信方式 props(主要是父传子) 自定义事件(主要是子传父) pubsub消息订阅与发布 xuex 1.props和自定义事件 app.vu ...
- Mysql - 读写分离与读负载均衡之Maxscale
一.概述 常见的高可用方案如MMM和MHA等都将重点放在主库上,一旦主库出现故障,通过这些方案能将主库故障进行转移. 本文将给大家介绍一款由mariadb公司出品的中间件Maxscale,该中间件能实 ...
- Python高级特性——迭代器
可以直接用for循环的数据类型有: 集合数据类型,如:list.tuple.dict.set.str等: 生成器generator,包括生成器和带yield的generator function. 以 ...
- 再窥R(包括一个R示例)
一.将输出作为输入——结果的重用 R有个特点,分析的结果可以保存下来,并可以作为进一步分析的输入使用.下面我们通过R中的预先安装好的数据集作为实例(这里只讲述原理,涉及到的统计知识,以后在另外的统计专 ...
- python入门经典_好资源送不停
- ++,--(前缀)