.net平台:厨房
.net core框架:柴米等工具
.net core应用:做出来的菜
VS设置行号:
设置字体:
注释:
单行注释 //
多行注释 /**/
文档注释 ///
数据类型:浮点数推荐使用double类型,不用float类型。
一元运算符优先级大于二元运算符。
以后浮点数类型统一用decimal。可以指定小数位数。
如果希望实数被视为 decimal 类型,请使用后缀 m 或 M,
bool类型统一使用bit类型。
字符串转其他类型:
Convert.ToInt32();内部调用的是int.Parse()内置函数或者int.TryParse()。推荐使用Convert.ToInt32();效率可以忽略。
推荐使用短路与或者短路或,||、&&而不是|、&。
对于sqlserver中的varchar和nvarchar来说,sqlsugar均将其映射为string类型。
@作用:保留原格式:
类型转换:转换前提,两个类型之间类型是兼容的。
if-else:
存在2种以上情况的。推荐使用if-else-if结构。一种情况使用if即可,2种情况使用if-else结构。
break用于结束最近的循环,continue用于结束本次循环。
异常:
swith-case语句:
循环:
三目运算符:
随机数:
常量:不能够被重新赋值,一旦声明就不允许修改。
枚举:public为默认值。
建议带着public。
所有类型都可以转化成string类型。
字符串转枚举类型,了解即可。
Gender gender1 = (Gender)Enum.Parse(typeof(Gender), "1"); //了解即可 可以跟int和string类型相互转换 typeof为操作符
结构:忽略,实际开发中都是用类,很少使用结构。
数组:存储多个相同类型的数据,长度不可变。 默认值为0。
.net6中定义的新方法:
使用静态字段模拟全局变量:C#中没有静态变量。
out与ref参数:
可变参数:
注意:只能有一个可变参数,且只能放到最后位置。
方法重载:方法名称相同,参数不同即可构成重载。
方法递归调用,方法自己调用自己。
将小数保留2位的方法:先转成string,再转成double。
double d = 3.1456;
Console.WriteLine(d);
string s = d.ToString("0.00");
d = Convert.ToDouble(s);
Console.WriteLine(d);
面向对象:找对象帮你做事。
创建对象的过程称为实例化,创建对象的时候,对象内部的字段有默认值。字段首字母小写,带一个下划线,如_gender等。推荐使用自动属性。
属性作用,保护字段,对字段的取值和赋值进行限定。
属性本质:2个方法,get方法和set方法。
静态与非静态的区别:
工具类一般将其封装为静态类。
静态类在整个项目中是共享的。
构造函数:用于初始化对象。
析构函数:用于释放资源。
命名空间:
值和引用类型:
字符串的不可变性:
如何修改字符串某个字符或者整个字符串:
将字符串转成字符数组,修改字符数组内容,然后字符数组转成字符串即可。
常用方法:
对于字符串操作,建议使用:避免大量字符串拼接,提高效率。
常用方法:
str.length:获取长度。
忽略大小写进行比较:
分割字符串,支持传入多个字符。
第二个参数为搜索的起始位置,第一次出现位置:
移除前后空格:
总结:
继承:
在创建子类对象的时候,默认会调用父类默认的无参构造函数,从而创建父类对象。即在子类对象内部创建父类对象。
一个子类只能继承一个父类。
子类没有继承父类的构造函数。
显式调用父类构造函数:
查看类图:
关键字new隐藏父类属性。子类调用不到父类成员。
若子类与父类存在同名的方法,则子类调用到的是自己的方法,而调不到父类的方法。需要加new关键字。
理式转换:传递参数的时候可以传递一个父类对象过去。
arraylist:不推荐使用,推荐使用泛型list。
Hashtable:不推荐使用,推荐使用泛型Dictionary。
自动推断类型:
var,不推荐使用。
总结
-
var
是静态类型系统的语法糖,用于简化代码,不改变类型安全特性。 -
dynamic
是动态类型系统的入口,用于绕过编译时检查,需承担运行时风险。
推荐使用foreach遍历:该循环的效率是for循环的很多倍数。
效率高。
path类:操作路径
获取文件名称:
file类:操作文件。
编码:字符串以什么样的形式保存为二进制。
file读写文件:
对于操作文本文件,返回值不同。
相对路径和绝对路径。
写文件:file适用于操作小文件。读大文件需要用到大文件了。
list泛型集合:
可以实现数组和list的相互转换。
装箱与拆箱,应该避免这些:
//发生自动装箱和拆箱的条件为存在继承关系 应该尽量避免拆箱和装箱的操作
字典遍历: 键必须唯一。
文件流用于操作大文件:
读文件:
写文件:最后一个选项改为写的配置即可。
文件复制:
其中的编码选项使用默认:
读取文件:
写入文件:默认情况下会覆盖文件内容。
多态:
实现多态的三种方法:
//实现多态的三种方法
//1.将父类的方法标记为虚方法 然后子类重写该方法 virtual和override需要配合使用
//2.抽象类 将父类及其方法标记为abstract 然后子类重写父类的抽象方法
//3.接口 实现接口方法
1、虚方法
第二种方法,抽象类:不允许创建对象。签名一样,参数和返回值一样。
访问修饰符:
public:到处可以访问
private:当前类内部可以访问
protected:当前类内部及其子类内部
internal:只能在当前项目中访问 在同一个项目中internal和public和权限一样
//子类访问权限不能高于父类
默认访问修饰类:
设计模式:就是解决方案。一共有23种设计模式。
简单工厂设计模式。
值传递和引用类型。
值在复制的时候传递的是值本身,引用类型在复制的时候传递的引用,地址。
序列化与反序列化:
部分类:
密封类:
不能被继承,但是可以继承别人。
3、接口:
//接口中的方法不允许添加修饰符 默认为public
//显示实现接口方法 ,为了解决方法的重名问题。
注意:接口中只能有方法
单例模式:
委托,也是一种数据类型。
匿名函数:
lamda表达式:
泛型委托: