c#学习笔记
c#基础
c#语言特点
- C#是微软公司发布的一种面向对象的、运行于.NET Framework和.NET Core(完全开源,跨平台)之上的高级程序设计语言
- C#是一种安全的、稳定的、简单的、优雅的,由C和C衍生出来的面向对象的编程语言。它在继承C和C强大功能的同时去掉了一些它们的复杂特性
- C#是面向对象的编程语言
什么是 .NET?
.NET 是由 Microsoft 创建的开源开发人员平台,用于生成许多不同类型的应用程序。
可以使用 C#、F# 或 Visual Basic 编写 .NET 应用。
- C# 是一种简单、现代、面向对象和类型安全的编程语言。
- F# 是一种编程语言,利用它可轻松编写简洁、可靠且性能出色的代码。
- Visual Basic 是一种易于使用的语言,简单语法便于生成类型安全、面向对象的应用。
c#语法基础
cs文件结构
结构展示
-
程序的第一行
using System;
using
关键字用于在程序中包含System
命名空间。一个程序一般有多个using
语句 -
下一行是
namespace
声明。一个namespace
是一系列的类。WebApplication1
命名空间包含了类Program
。 -
下一行是
class
声明。类Program
包含了程序使用的数据和方法声明。类-般包含多个方法。 方法定义了类的行为。在这里,Program
类只有一 个Main
方法。 -
下一行定义了
Main
方法,是所有C#程序的入口点。Main
方法说明当执行时类将做什么动作。 -
Main方法通过方法体中的语句指定它的行为。
注意:
-
C#大小写敏感的。
-
所有的语句和表达式必须以分号
;
结尾。 -
与Java不同的是,文件名可以不同于类的名称。
C#是一种面向对象的编程语言。在面向对象的程序设计方法中,程序由各种对象组成。相同种类的对象通常具有相同的类型。
案例:
以人类为例,从人类中诞生出的具体对象“C罗”和“梅西”,同属人类,故俩人类型相同。
关键字
关键字,是对编译器有特殊意义的预定义保留标示符,它们不能在程序中用作标示符
-
using关键字
在任何C#程序中的第一条语句都是:
using System;
using
关键字用于在程序中包含命名空间。一个程序可以包含多个using
语句。 -
class关键字
class关键字用于声明一个类。
-
C#的注释方式
- // 单行注释
- /**/ 多行注释
- /// 文档注释
- 注释的作用:
-
解释:说明代码作用
-
注销:将暂时不需要的代码注销
铭记:
- 不写注释是流氓
- 名字瞎起是扯淡
- 相比注销,注释意义更大
- 要做到别人一看就能看懂
变量
-
变量是一个供程序存储数据盒子。在C#中,每个变量都有一个特定的类型,不同类型的变量其内存大 小也不尽相同。
-
C# 中提供的基本类型大致分为以下几类:
类型 举例 整数类型 byte、short、int、long 浮点型 float、double 十进制类型 decimal 布尔类型 bool 字符类型 string、char 空类型 null
表达式
-
表达式由**操作数(operand)和运算符(operator)**构成。运算符的示例包括
+
、-
、\*
、/
和new
。操作数的示例包括文本、字段、局部变量和表达式。 -
当表达式包含多个运算符时,运算符的优先级(precedence)控制各运算符的计算顺序。例如,表达式
x + y * z
按x + (y * z)
计算,因为*
运算符的优先级高于+
运算符。 -
(了解)大多数运算符都可以重载(overload)。运算符重载允许指定用户定义的运算符实现来执行运算,这 些运算的操作数中至少有一个,甚至所有操作数都属于用户定义的类类型或结构类型。
-
下表总结了C#简单常用的运算符,并按优先级从高到低的顺序列出各运算符类别。同类别中的运算符 优先级相同。
类别 | 表达式 | 说明 |
---|---|---|
基本 | x.m |
成员访问 |
x(...) |
方法和委托调用 | |
x[...] |
数组和索引器访问 | |
newT(...) |
对象和委托创建 | |
newT(...){...} |
使用初始值设定项创建对象 | |
new{...} |
匿名对象初始值设定项 | |
newT[...] |
数组创建 | |
一元 | +x |
恒等 |
-x |
求相反数 | |
!x |
逻辑求反 | |
~x |
按位求反 | |
++x |
前增量 | |
--x |
前减量 | |
x++ |
后增量 | |
x-- |
后减量 | |
(T)x |
将x显示转换为类型T | |
二元 | x * y |
乘法 |
x / y |
除法 | |
x % y |
取余 | |
x + y |
加法,字符串串联 | |
x - y |
减法 | |
x << y |
位左移 | |
x >> y |
位右移 | |
x < y |
小于 | |
x > y |
大于 | |
x <= y |
小于或等于 | |
x >= y |
大于或等于 | |
x is T |
如果 x 位 T ,返回true ,否则false |
|
x as T |
返回转换为类型 T 的 x ,如果 x 不是 T 则返回null |
|
x == y |
等于 | |
x != y |
不等于 | |
x & y |
整形按位与 ,布尔逻辑AND | |
`x | y` | |
x && y |
且,当 x 为true 时,才对 y 求值 |
|
`x | ||
x ?? y |
如果 x 为null ,则计算结果为 y,否则为 x |
|
三元 | x ? y : z |
如果 x 为true ,对 y 求值,x 为false ,对 z 求值 |
赋值或匿名函数 | x = y |
赋值 |
x = x + y |
复合赋值 | |
(T x) => y |
匿名函数(lambda表达式) |
数组
数组
-
数组是一组相同类型的数据。
-
数组中的数据需要通过数字索引来访问。
数组的声明
-
数组的声明需要使用
new
关键字。 -
在声明数组时,可以使用
{}
来初始化数组中的元素。 -
如果在数组声明之初没有使用大括号来初始化数组中的元素,则需要指定数组的大小。
-
在声明初始化有元素的数组时,也可以指定数组大小。
1 | //声明没有元素的数组 |
通过索引获取数组中的元素。
- 给数组指定长度时,数组准备存放多少元素,长度就设置为多少。
- 用索引获取数组内的元素时,索弓|从0开始获取。
- 所以数组中最大的索引数字,比指定数组长度小1。
1 | //声明初始化有元素的数组 |
C#面向对象
类与对象
-
类和对象的概念
-
类和对象的关系
-
类的设计
-
类是模板,对象是根据类这个模板创建出来的,应该先有类,再有对象
-
类只有一个, 而对象可以有很多个
- 不同的对象之间属性的具体内容可能各不相同
-
类中定义了什么属性和方法,对象中就有什么属性和方法,不可能多,也不可能少
集合
ArrayList
的使用
ArrayList
是.NET Framework提供的用于数据存储和检索的专用类- 它是命名空间
System.Collections
下的一部分
ArrayList arrayList=new ArrayList();
arrayList.Add(123); //将数据新增到集合结尾处
arrayList.Add(“abc”); //将数据新增到集合结尾处
arrayList[2]=345; //修改指定索引的数据
arrayList.RemoveAT(0); //移除指定索引处的数据
arrayList.Remove(123); //移除内容为123的数据
arrayList.Insert(0,“hello world”); //再指定索引处插入数据
List
list.Add(123); // 新增数据到结尾处
List
{
123,
456,
789
};
intList[2] = 345;
intList.RemoveAt(0); // 删除指定索引处的数据
intList.Remove(123); // 删除内容为123的数据
intList.Insert(0, 6688);
Dictionary
字典的使用
-
在声明
Dictionary
字典时,需要同事为其声明Dictionary
字典内的键与值的类型 -
示例:
Dictionary<int, string> dictionary = new Dictionary<int, string>();
键与值可以是任何类型,但是键必须在设置时是唯一的,而值可以不唯一,就好比每个学生的学号必须是唯一的,而所有的成绩可以不唯一。
1 | Dictionary<int, string> dictionary = new Dictionary<int, string>(); |
注意dictionary[1]
方式既可以赋新值可以修改原来已键有的值,类似于数组索引器的使用, 所以可以使用之前已使用过的键。但是Add
方法不可以添加已有键的值。
1 | //获取键为1的值 |
总结
foreach
的使用
-
foreach
就是传说中的增强for
循环或者称作foreach
循环 -
foreach
对遍历字典或集合具备天然优势,效率高过for
循环
3.1 foreach
操作数组
1 | int[] ints= {1,2,3,4,5,6}; |
3.2 foreach
操作集合
1 | List<int> intList = new List<int>() { 1, 2,3, 4,5, 6 }; |
3.3 foreach
操作字典
1 | Dictionary<string, string> dictionary = new Dictionary<string, string>() { |