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行业精选日报_人工智能(12·20)
IDC:中国智能家居市场2020年十大预测 12 月 20 日消息,「IDC 咨询」官方公众号发布「中国智能家居 2020 年十大预测」.具体内容如下:互联平台加速整合.语音助手广泛赋能.智能电视显著 ...
- Cesium专栏-terrain地形、3dtiles模型、gltf模型 高度采样
在Cesium中,对于terrain地形.3dtiles模型.gltf模型的高度采样是一个很基本的功能,基于此,可以做一些深度应用,而Cesium已经帮我们提供了相应的API,在这里,我帮大家总结一下 ...
- macbook无法下载软件问题解决
今天新买了一台MacBook Pro,但是发现无法下载软件,在App Store中一直转圈圈. 方法:修改网络DNS为114.114.114.114和8.8.8.8,即可解决.
- weui实现滚动加载的效果
weui是微信公司提供的一个UI框架,在H5开发中一些组件可以直接使用.weui文档地址:http://www.jqweui.cn/components 使用weui,需要引入weui.css和jqu ...
- C# FlagAttriute 的 小妙招
FlagAttriute ,指示可将枚举视为位域(即一组标志). 官网中文解说:https://docs.microsoft.com/zh-cn/dotnet/api/system.flagsattr ...
- Go使用变量类型声明和方法的注意事项
当我们通过把一个现有(非interface)的类型定义为一个新的类型时,新的类型不会继承现有类型的方法. 神马意思?来一段简短错误的代码: package main import "sync ...
- SpringCloud之Hystrix:集群容错框架
分布式环境中,可能会有一些被依赖的服务会失效,影响系统的稳定运行.Hystrix通过添加延迟阈值以及容错的逻辑,以控制分布式系统间组件的交互.Hystrix通过隔离服务间的访问点.停止它们之间的级联故 ...
- LeetCode刷题191203 --回溯算法
虽然不是每天都刷,但还是不想改标题,(手动狗头 题目及解法来自于力扣(LeetCode),传送门. 算法(78): 给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集). 说明: ...
- C编程小结1
1. ‘\0’表示字符串结束符 2. 变量之间互相赋值一定要考虑他们的数据类型,要强制转换匹配上了或者进行一些处理才能赋值,同时读程序的时候也要注意这一点,否则可能看不懂.如: sData[0]=wD ...
- windows 下 安装vue环境 以及创建新项目 极简
一.安装node.js(https://nodejs.org/en/) 官网下载安装 验证命令: node -v 二.安装npm npm install -g cnpm --registry=http ...
- python入门经典_好资源送不停
- ++,--(前缀)