C#笔记记录

.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,不推荐使用。

 推荐使用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表达式: 

 泛型委托:

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

荒先生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值