导图社区 VS C程序设计
这是一篇关于VS C程序设计的思维导图
编辑于2022-03-03 17:00:31VS C#程序设计
基础语法
输入输出
输出: 换行输出 ConSole.WriteLine(); 无换行输出 ConSole.Write();
输入:ConSole.ReadLine();
变量
命名规则: 以字母开头可接字母,数字,下划线 1.pascal大小写:标识符中每个单词都首字母大写 用于各类型名和成员 2.camel大小写:除第一个单词以外标识符中所有的单词都首字母大写
占位符
“{ }”从0开始有几个用几个不可跨
字符类型
int
double
fort
bool
string
类型转换
隐式转换
两类型兼容
目标大于原类型
如: double....int
显示转换
两类型兼容
目标小于原类型
语法
(类型转换)(变量名)=(转换原类型)原变量名
Convert转换
两类型不兼容
转换时注意转换内容
列: string n=“123”; int n=Conver.toint(n);
中间内容遗失不想打了
try{ try不能正常运行则运行catch } catch{ }
const常量定义函数 定义后的内容无法被改变
枚举 public enum 枚举名 它可以定义在类中也可以定义在命名空间下面 定义的位置决定他的可用范围 枚举类型它可以将一组值存放到一个变量名下,方便调用 调用枚举 枚举名 变量=枚举名.枚举中定义的值。
字符串转换枚举类型
结构 public struct 结构名 (用以存储字段) 为了便于区分变量和字段 字段前加要下划线 变量只能存一个值 字段能存多个值 调用方法 结构名.字段名 同样结构可以传入枚举类型进去进行存储
Array.Sort(数组名)数组升序 Array.Reverse( 数组名)反转 数组要将升序后进行使用才能达到降序的效果(数组降序)
out,ref,params
out 在一个方法中返回多个相同的类型值,可以考虑用数组 但如果返回多个不同类型值 返回数组就不行了 out参数侧重于在一个方法中可以返回多个不同类型的值
ref 能够将一个变量带入一个方法中进行改变 再将改变的值带出方法 ref参数要求在方法外必须为其赋值,而方法内可以不赋值
params可变参数 将实参中跟可变参数数组类型一致的元素都当做数组元素处理 可变参数必须是形参列表中的最后一个元素
方法重载
方法名称相同但参数不同 参数不同分两种情况 参数个数相同 那参数类型就不同 参数类型相同 那参数个数不能相同
方法递归
方法自己调用自己
面向对象
面向 封装 继承
基本概念
从面向过程转到面向对象 面向过程强调的是完成前这件事的过程,强调的是完成这件事的动作 面向对象 意思在于写一个通用的代码,屏蔽差异,我们在代码中描述一个对象,通过描述这个对象的属性和方法,对象必须事看得见摸得着的,这里进一步来说我们是将相同属性和相同方法的对象进行进一步的封装,类就是一个模子它确定了对象应具有的属性和方法,对象是根据类创建出来的
类
语法: [public] class 类名 { 字段; 属性; 方法; }
写好一个类之后,我们需要创建这个类的对象,那么,我们管创建这个类的对象过程称之为类的实列化,使用关键字new。 this.字段,表示当前类的对象。 :this(传参)用于在同一个类中传递参数 不用重复定义 类是不占内存的,对象是占内存的
属性的作用就是保护字段,对字段的赋值与取值进行限定 get赋值set取值 value当前值
创建快捷键 ctre+r+e
区分变量和结构,字段前面必须加下划线
public:公开的公有的,哪都可以访问 private:私有的,默认属性,只能在当前类的内部进行访问,出了这个类就访问不到了
静态与非静态
静态(有static标记)和非静态的区别
在非静态类中既可以有实列成员,也可以有非静态成员
在调用实例成员的时候,需要使用对象名.实列成员
在调用静态成员的时候,需要使用类名.静态成员名
静态成员必须使用类名去调用,而实列成员使用对象名调用
静态函数中,只能访问静态成员,不允许访问实列成员
实列函数中,既可以使用静态成员,也可以使用实列成员
静态类中只允许有静态成员,不允许出现实列成员
构造函数
public 类名()
作用
帮助我们初始化对象(给对象的每一个属性依次赋值)
构造函数是一个特殊的方法
构造函数没有返回值,连void也不可以写
构造函数的名称必须跟类名一样
创造对象是的时候会执行构造函数
构造函数是可以有重载的
类当中会有一个默认的无参数的构造函数,当你写一个新的构造函数之后无论是有参数还是无参数的,那个默认的无参数的构造函数都被干掉了
this属性
代表当前类的对象
在类中显示当前调用本类的构造函数 使用方法 构造函数:this
析构函数
用法 ~类名
作用
帮助我们释放资源
当程序结束的时候析构函数才会执行
命名空间
namespace()
作用用于解决类的重名问题,可以看做“类的文件夹”
类是属于命名空间的
如果该项目中没有这个类的命名空间,我们需要手动的导入这个类所在的命名空间
可用鼠标去点
直接输入
或者alt+shift+F10
在一个项目中引用另一个项目的类
1.添加引用项目(在右侧的项目栏引用中右击)
2.在命名空间处引用其他方案的命名空间
值类型和引用类型
值类型和引用类型在存储上存储的地方不一样
在传递值类型和转递引用类型的时候,传递的方式不一样
值类型我们称之为值传递,引用类型我们称之为引用传递。
我们学的值类型和应用类型
值类型
int、double、bool、char、decimal(高精度浮点数)、struct、enum(枚举)
引用类型
string 、自定义类、数组
值类型的值是存储在内存的栈中
引用类型的值是存储在内存的堆中
字符串的不可变性
当给同一个字符串赋值时,字串会开辟一个新空间不会将老值给抹除
但正因为字符串的不可变性,会造成空间浪费,所以当程序结束后,GC扫描整个内存,如果发现有的空间没有被指向,则立即把他删除。
字符串的方法
n.Tocharray();将数据转换成char类型的数组 new string(字符数组)转换回字符串
可以将字符串看作字符数组
StringBuilder sb = new StringBuilder();用于解决在字符串中赋很多值的情况用于节省内存,因为字符串每进行一次不同值的赋值都会创建一个空间
Stopwatch sw = new Stopwatch();创建一个计时器用于记录sw.Start();到sw.Stop();之间程序的运行耗时
Length获得当前字符串中字符的长度
变量名.ToUpper():将字符串转换成大写形式
变量名. ToLower():将字符串转换成小写形式
Equals(字符串1,StringComparison,字符串2):将两个字符串,可忽略大小写进行比对
string[]Split(params char[] separator):将字符串按照指定的分割符分割为字符串数组;
string[]Split(char[] separator,StringsplitOptions options):将字符串按照指定的char分割符分割成字符串数组(options取RemoveEmptyEntriesd的时候移除结果中的空白符);
截取字符串
字符串名.Substring(从第几个开始包括开始的那个位置,截取几个);
字符串替换 字符串名.Replace("替换内容",“要替换的内容”)
判断字符串包含内容
字符串名.Contains(“包含内容”)
截取字符串
字符串名.Sunstring(从第几个开始截取,截取个数)
判断字符串以子串value开始
字符串名(bool) startsWith(value)
判断字符串以子串value结束
字符串名(bool) EndsWith(value)
取子串value第一次出现的【位置】
字符串名.IndexOF('value',从第几个开始截)
取子串value最后出现的【位置】
字符串名.LastIndex0f('value',从第几个开始截)
移除字符串中的所有空字符
字符串名.Trim()
移除字符串前面的空字符
字符串名.TrimStart()
判断字符串是否为空
string.IsNullorEmpty(字符串)
将字符串数组中插入内容
string.Join(“分隔符”,可变参数(可以是字符串数组也可以直接将字符串打进来))
继承
注: ConSole.Readkey();暂停程序 #region......#endregion折叠其中的内容 转义字符: \r回车 \n换行 \“表示英文半角的双引号 \b表示一个退格键,放在字符串两边没有效果 \t表示一个tab键的空格 \\表示一个\ @取消|\在字符穿中的转义作用,使其单纯表示一个"\"