导图社区 c-sharp学习思维导图(唐老狮)
这是一篇关于c初级的思维导图,主要内容包括:程序语言有哪些,初级语法。内容详细,通过分支和层级关系将C初级语法的各个知识点有序组织,适合用于C语言初学者的学习和知识梳理。
编辑于2025-12-03 20:17:10c#初级
程序语言有哪些
初级语法
基础书写
书写规则
常用事情
框架
using System;//工具包 namespace 第二 { class Program//类代码块//工具 { static void Main(string[] args)//函数代码块//工具可以做的事情 { } } }
注释
//
一行
/**/
多行
///
命名空间
打印
输入
Console.ReadLine();
检测玩家输入完毕后才会继续打印 ,回车
Console.ReadKey();
检测玩家输入完毕后才会继续打印 ,任意键
输出
Console.Writeline("");
自动空行
Console.Writeline(""+);
Console.Write("");
折叠代码
#region+tap
打印默认值
子主题
变量
概念
可以变化的容器
本质占用内存
int sbytesize = sizeof(sbyte);
如何申明变量
单个
变量类型 变量名 = 初始值;
int i = 1 ;
多个
变量类型
有符号整形变量
能存储正负数和零
无符号整形变量
正数和零
浮点数(小数)
float
加f
会四舍五入
从第一个非零数字开始
double
decimal
加m/M
特殊类型
bool
true
false
char
字符类型
string
字符串类型
变量初始化
申明时可以不赋值,但是不建议
变量命名规则
常量
常量的申明
const int i2 = 20;
必须初始化
不能被修改
转义字符
是什么
表示特殊符号
写法
\+字符
常用
\'
\"
\n 换行
\\
不常见
tab键-制表符
\t
光标退格
\b
str = "123\b123"; console.writeline(str)
12123
\0
没用
警告音
\a
取消
类型转换
隐式转换
相同大类型
大范围装小范围
注:decimal与其它浮点类型无关系
但是可以隐式存储整形
不同大类型
所有浮点数大于所有的整型
特殊的变量无法隐式转换(除char)
注
ASCII码 字符的本质
显示转换
方法
括号强转
手动处理,强制转换
范围问题
超出范围
精度问题
浮点数转整数
主要用于数值转换
Parse法
手动处理,强制转换
必须能够转换,否则报错
主要用于字符串转换成其他
Convert法
大乱斗,各种类型相互转换
相对于其他转换,精度更高,会四舍五入
其他类型转string
这个打印1的时候已经调用。ToString()
异常捕获
作用
避免代码报错导致的卡死
写法
try//必备部分 { } catch { } finally//可选部分 { }
运算符
字符串拼接
string变量里面的+是拼接
存在+=
12314true
算数运算符
赋值运算符 =
先看右侧,然后赋值给左侧变量
算数运算符
例
+
-
*
\
%
复合运算
运算符=
用于自己=自己进行运算
自增减
用于加减1
i++;
先用再加
++I;
先加再用
优先级
乘除加减,括号最内层
条件运算符
优先级低于运算符,高于逻辑运算符
不能进行范围比较
char
重载需要两个参数
逻辑运算符
逻辑与
&&
同真为真,有假则假
逻辑或
||
有真则真,同假则假
逻辑非
!
真变假,假变真
仅他允许重载
优先级
!优先级较高,高于条件运算符
&&高于||
位运算符
位于&
位或|
异或^
位取反~
重载一个参数
左移<< 右移>>
三目运算符
基本语法
具体使用
不允许重载
C-Sharp
问题
Parse法强转既然要合法合规那这跟重新定义数值有什么区别
不会
显示转换
c#基础
基础语法
复杂数据类型
枚举
概念
它是一个被命名的整形常量的集合
申明枚举和申明枚举变量
申明枚举语法
enum E自定义枚举名
enum E_自定义枚举名 { 自定义枚举项名字,0 自定义枚举项名字,1 自定义枚举项名字 ,自定义7 自定义枚举项名字,8 }
在哪里申明
namespace语句块中
常用
class语句块,struct语句块中
枚举使用
main
枚举的类型转换
int
转枚举
int i = int.Parse(Console.ReadLine()); E_qqzt l = (E_qqzt)i; Console.WriteLine(l);
string
转枚举
子主题
枚举的作用
子主题
数组
一维数组
概念
存储相同类型数据的集合
申明
使用
数组的长度
Console.WriteLine(array.Length);
获取元素
Console.WriteLine(array[0]);
修改元素
array[0]=99;
遍历数组
for(int i = 0; i< array.Length; i ++) { Console.WriteLine(array[i]); }
增加数组的元素
初始化以后无法直接增加
需要搬家
int[] array2 = new int[6]; for(int i = 0; i< array.Length; i ++) { array2[i] = array[i]; } array = array2;
删除数组的元素
初始化以后无法直接增加
删除最后一个
删除随便一个
查找数组的元素
需要遍历一遍
二维数组
概念
通过两个下标(索引)来确定元素的数组
申明
使用
二维数组的长度
行
Console.WriteLine(array.GetLength(0));
列
Console.WriteLine(array.GetLength(1));
获取元素
Console.WriteLine(array[0,1]);
修改
array[0,1]=99;
遍历
for (int i = 0; i < array1.GetLength(0); i++) { for (int j = 0; j < array1.GetLength(1); j++) { Console.WriteLine(array1[i,j]); } }
增加数组的元素
初始化以后无法直接增加
需要搬家
int[,] array1 = new int[,]{ {1,2,3}, {2,3,4}, {2,3,4}, }; int[,] array2 = new int[4,4]; for (int i = 0; i < array1.GetLength(0); i++) { for (int j = 0; j < array1.GetLength(1); j++) { array2[i, j] = array1[i, j]; } } array1 = array2; for (int i = 0; i < array1.GetLength(0); i++) { for (int j = 0; j < array1.GetLength(1); j++) { Console.WriteLine(array1[i, j]); } }
删除数组
交错数组
查找数组
交错数组
基本概念
是数组的数组
申明
子主题
使用
长度
行
Console.WriteLine(array.GetLength(0));
列
Console.WriteLine(array[0].Length);
获取
Console.WriteLine(array[1][1]);
修改
array[1][1]=99;
遍历
值类型与引用类型
使用和存储上的区别
分类
引用类型
string,数组,类
值类型
有无符号,浮点,boor,char ,结构体
使用区别
值类型是拷贝,本身不变
栈空间
系统分配
引用类型是两者指向同一个值
堆空间
手动申请
为什么有区别
存储区域不同,存储方式不同
特殊的引用类型string
string的它变我不变
具有值类型特征,仅限c#
频繁改变会产生垃圾
函数
基本概念
一个有名字的代码块
通过使用名字来执行代码块
作用
封装代码
提升代码复用率
抽象行为
基本语法
无参无返回值
有参无返回值
无参有返回值
有参有返回值
ref out
使用
一定会改变
忽视栈堆的问题
区别
变长参数和默认值
变长参数关键字
params
必须是一个数组
最后一个参数,且只有一个变长参数
参数默认值
可选参数
如果没有给他参数就会用默认值
支持多参数默认值,如果混用放到最后
函数重载
基本概念
同一语句块中,函数名相同,参数数量不同
或者是数量相同,但是参数类型或顺序不同
注意
ref out不能同时修饰一个函数名
递归函数
自己调用自己
条件
必须有结束调用的条件
用于条件判断的这个条件,必须改变,能达到停止的目的
复杂数据类型--结构体
数据和函数的集合
在结构体中申明的变量不能初始化,可以包含结构体,但是不能包含自己
自定义变量
排序初探
冒泡排序
基本原理
两两相邻
不停比较
不停交换
比较n轮
代码实现
优化
特殊情况优化
选择排序
基本原理
新建中间商
依次比较
找出极值
放入目标位置
比较n轮
代码实现
c#核心
面向对象
class类
面向对象-封装
类和对象
什么是类
一类对象
申明在哪
namespace
语法
class 类名 { }
成员特征
成员的变量和访问修饰符
成员的变量
使用
访问修饰符
3p
初始值
成员行为
成员方法
注意
不可以加static
必须先有实例化对象
可以3p
成员方法
包裹成员变量
成员属性
访问修饰符 属性类型 属性名 { get{} set{} }
初始化调用
构造函数
释放时调用
析构函数
静态成员
静态类,静态函数
类加static 函数加static
拓展
为现有的非静态的 变量类型 添加方法
拓展重名,会使用原方法
运算符重载
能够让自定义的类和结构体可以使用运算符运算
operator
内部类
一个类里面再申明一个类
分部类
partial
面向对象-继承
基本概念
基本语法
只能有一个爸爸,可以有孙子
里氏替换原则
基本语法
父类容器装载子类对象
is
as
继承中的构造函数
实例化
默认无参
base
指定调用
万物之父
基于里氏替换原则
装箱拆箱
密封类
面向对象-多态
概念
多种状态
实现
解决一个对象多种方法的问题
vob
virtual虚函数
override重写
base父类
保留父类
抽象类
抽象函数
接口
接口是行为的抽象规范
interface
区别
密封方法
面对对象关联知识点
命名空间
namespace
使用
using 名称
注明出处
不同空间同名
命名空间包括命名空间
万物之父的方法
静态方法
成员方法
虚方法
string
stringbuilder