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 ...
随机推荐
- AWVS 10.5使用指南
前言 AWVS是一款可与IBM AppScan比肩的.功能十分强大的Web漏洞扫描器.由Acunetix开发,官方站点提供了关于各种类型漏洞的解释和如何防范,具体参考:Acunetix Web Vul ...
- [ASP.NET Core 3框架揭秘] 依赖注入[6]:服务注册
通过<利用容器提供服务>我们知道作为依赖注入容器的IServiceProvider对象是通过调用IServiceCollection接口的扩展方法BuildServiceProvider创 ...
- javascript的ES6学习总结(第三部分)
1.ES6中的面向对象的类 1.1.定义类 在ES5中,我们写一个类,通常是这么写的 function Person(name,age){ this.name = name; this.age = a ...
- sessionstorage中存储JSON数据
在web开发时,可能经常会用到sessionstorage存储数据,存储单个字符串数据变量时并不困难 var str = 'This is a string'; sessionstorage.setI ...
- Cocos2dLua3.17.2集成FairyGUI(一)
版本说明:使用cocos2d-lua3.17.2版本 FairyGUI下载好链接地址是:https://github.com/fairygui/FairyGUI-cocos2dx 首先创建cocos项 ...
- 初学Manjaro
近期,看有朋友在使用Manjaro系统,感觉这个系统挺不错,于是我也安装了Manjaro,学习一下!!!! Manjaro下载地址:https://manjaro.org/download/ Manj ...
- require与import
require 和 import,都是为了JS模块化使用.最近项目中,因为多人协同开发,出现了一个项目中同时使用了require 和 import 引入依赖的情况.正常情况下,一个项目中最好是对引入方 ...
- js的动态表格的增删改查完整代码
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...
- java map在JSTL EL中的小应用--<c:forEach>遍历Map<>泛型
准 备 数 据 :(自己准备吧少年,考验你时候到了!!) /** 结构示意图: 类型: List集合 map对象 LIst集合 Person类对象 String name : int age mLis ...
- OSG绘制空间凹多边形并计算其面积
目录 1. 思路 1) 多边形分格化 2) 几何图元遍历 2. 实现 3. 参考 1. 思路 这个问题其实涉及到OSG中的两个问题:多边形分格化和几何图元遍历. 1) 多边形分格化 在OpenGL/O ...
- python入门经典_好资源送不停
- ++,--(前缀)