《C#语⾔⼊门详解(刘铁锰)-学习笔记》
C# 学习笔记
⽂章⽬录
前⾔
本篇主要介绍C#的⼀些基础语法知识,如变量、数组、表达式、类、函数等;
本篇后续会补充⼀些关于C#的⼀些不常见知识的基础概念
⼀、C# 语⾔及其特点
1. C# 语⾔概念及其特点
C# 是微软发布的⼀种⾯向对象的、运⾏于 .NET Framework 和 .NET Core(完全开源,跨平台) 之上的⾼级程序设计语⾔;
C# 是⼀种安全的、稳定的、简单的、优雅的,由C和C++衍⽣出来的 ⾯向对象 的编程语⾔。它在继承C和C++强⼤功能的同时去掉了⼀些它们的复杂特性;
1. ⾯向对象与⾯向过程编程语⾔的区别:
⾯向过程: 是⼀种以过程为中⼼的编程思想。它是⼀种基础的顺序思维⽅式,是以什么正在发⽣为主要⽬标进⾏编程,不同于⾯向对象的是谁在受影响;特性: 模块化、流程化;常见的 ⾯向过程编程语⾔ 有: C语⾔、COBOL 语⾔、Fortran语⾔ 等。(优点: 性能⽐⾯向对象⾼,⾯向对象类调⽤需要实例化,消耗资源)
⾯向对象: 是⼀种对现实世界理解和抽象的⽅法,是计算机编程技术发展到⼀定阶段后的产物。它是直接把所有事物都当作独⽴的对象,处理问题过程中所思考的不再主要是怎样⽤数据结构来描述问题,⽽是直接考虑重现问题中各个对象之间的关系。(⾯向对象⽅法的基础实现中也包含⾯向过程思想);特性: 抽象 封装 继承 多态;常见的⽀持⾯向对象的编程语⾔有:C++ 语⾔、C# 语⾔、Java 语⾔、Python等。(优点: 有封装、继承、多态的特性,故⽽易维护、易复⽤、易扩展)
2. 认识.NET Framework & .NET Core
1. .NET与C#的关系:
.NET是平台;
C# 是平台所适⽤的对象,C# 只能运⾏在.NET 平台,但.NET平台还可适配其它对象,如C++,VB等。
2. .NET Framework 与 .NET Core的关系:
.Net Framework 历史要⽐ .Net Core 久⼀些。.Net Framework 的第⼀个版本⼤约在2002年前后推出的,⽽.Net Core的第⼀个版本,⼤约在2016年前后推出的,相差了将近14年的时间;
.Net Framework,只针对Windows平台,包含了Windows平台的所有特性;.Net Core 可以针对多个平台发布,但是.Net Core ⽆法包含.Net Framework的所有特性。但是.Net Core的跨平台特性可以⽅便的在多个平台上共享业务逻辑。
更多内容:详见
⼆、C# 语法基础
1. 关键字
关键字: 是预定义的保留标识符,对编译器有特殊意义。(除⾮前⾯有 @ 前缀,否则不能在程序中⽤作标识符。 例如,@if 是有效标识符,⽽ if 则不是,因为 if 是关键字。)
常见的关键字:
2. 类型
C# 的类型⼀共分为两类,⼀种是值类型(Value Type),⼀类是引⽤类型(Reference)。
值类型: 直接存储其值;值类型变量声明后,不管是否赋值,编译器为其分配内存;值类型的实例通常是在线程栈上分配的(静态分配),但在某些情形下可以存储在堆上。
引⽤类型: 存储其对值的引⽤;引⽤类型声明⼀个类时,只在栈中分配⼀⼩⽚内存⽤于容纳⼀个地址,并没有为其分配堆上的内存空间。当使⽤ new 创建⼀个类的实例时,分配堆上的空间,并把堆上空间的地址保存到栈上分配的⼩⽚空间中;引⽤类型的对象总是在进程堆中分配(动态分配)
常见的值类型: 数值类型(int、long、double、float等)、bool类型(true、false)、char类型、枚举类型(enum)、结构体类型(struct)、、可空类型(null);(即:byte,short,int,long,float,double,decimal,char,bool 和 struct 统称为值类型。)
常见的引⽤类型: 数组,⽤户定义的类、接⼝、委托,object,字符串。(即:string 和 class统称为引⽤类型。)
更多内容:详见
3. 变量、常量与注释
1. 变量与常量
变量: 是⼀个供程序存储数据的盒⼦。在C# 中,每个变量都有⼀个特定的类型,不同类型的变量其内存⼤⼩也不尽相同;
常量: 是固定值,程序执⾏期间不会改变。常量可以是任何基本数据类型,⽐如整数常量、浮点常量、字符常量或者字符串常量,还有枚举常量;(定义时,⽤const修饰符,如:public const int a = 1;)
变量和常量是相对的:变量是指所存放的值是允许改变的,⽽常量表⽰存⼊的值不允许改变。
2. C# 中提供的基本的值类型⼤致可以分为以下⼏类:
C# 允许定义其他值类型的变量,⽐如 enum,也允许定义引⽤类型变量,⽐如 class。
2. 注释
块注释: /* 注释内容 */
单⾏注释: // 注释内容
⽂档注释: /// 注释内容 (⽤于类、函数或⽅法的解释性注释⽅式)///
注释快捷键: ctrl + k + c (注释);ctrl + k + u (取消注释)
4. 表达式
表达式 = 操作数 + 运算符
运算符: +、-、*、/、new;
操作数: ⽂本、字段、局部变量、表达式;常⽤运算符优先级(从⾼到低排列)如下:
3. 其他运算符:
5. 数组、集合与字典
1. 数组
定义: 数组是⼀组 相同类型 的数据;数组中的数据需要通过 数字索引 来访问;
声明: 使⽤ 关键字new 来声明;
获取数据: ⽤索引获取数组内的元素时,索引从0开始,因此数组中最⼤的索引数字,⽐指定数组长度⼩1。
writeline输出数值变量
优势: 数组在内存中是 连续存储的,所以它的 索引速度是⾮常的快,⽽且赋值与修改元素也很简单。
劣势: 1. 数组的两个数据间 插⼊数据很⿇烦;2. 在声明数组的时候,必须同时 指明数组的长度,数组的长度过长,会造成内存浪费,过短会造成数据溢出的错误。
2. 集合
定义: 集合和数组类似,都是⽤于存放 ⼀组值;
ArrayList 集合: ArrayList 是.NET Framework提供的⽤于数据存储和检索的专⽤类;
ArrayList 的优势: 1. ArrayList 的⼤⼩是按照其中存储的数据来 动态扩充和收缩的;2. 在声明ArrayList对象时,不需要指定其长度 ;3. ArrayList可以 很⽅便的进⾏数据的添加、插⼊和移除。  (弥补了数组的劣势)
ArrayList 的劣势: 1. ArrayList在存储数据时,使⽤ object类型 进⾏存储的;2. ArrayList不是类型安全的,使⽤时可能会 出现不匹配 的错误;3.就算都有插⼊了同⼀类型的数据,但在使⽤的时候,我们也需要将它们转化为对应的原类型来处理;4.ArrayList的存储存在 装箱和拆箱 的操作,导致其性能低下。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。