![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C#学习
文章平均质量分 86
白虹思无邪
慢慢学吧
展开
-
十六、接口隔离原则、反射、依赖注入
五种原则当中的i上一章中的接口,即契约。契约就是在说两件事,甲方说自己不会多要,乙方会在契约里说自己不会少给。乙方的不会少给是比较容易做到的,作为服务的提供者,实现一个接口的时候,必须要实现接口里面的所有的方法,如果没有实现所有的方法,那么就会留下抽象方法,自己就变成了一个抽象类,那么仍然不能够实例化,不是一个完整的服务提供者,不是一个具体类。实现了一个接口的完整服务提供者,接口里面的方法是一定必须实现的。乙方不能少给,这是强制性的,硬性的规定。如果有方法没有实现完全,编译器会检查到报错。原创 2024-03-12 20:05:01 · 1016 阅读 · 0 评论 -
十五、抽象类与接口
这一张中,比较重要的就是抽象类与开闭原则,还有接口与依赖反转原则了,还有单元测试。抓主要作用,显式接口这种,不是特别重要的,可以粗略看看就行了。承的成员不会显示为公共接口的一部分。(这个功能好像是新功能,在某些版本不能使用,就不展示了,反正在微软的文档上面抄的显式接口实现 - C# 编程指南 - C# | Microsoft Learn另外,显式实现接口还有一种用法,就是隐藏方法。当一个类在实现接口的过程中不想实现其中的某个方法时,可以使用显式实现的方式实现此方法。原创 2024-03-08 19:53:14 · 915 阅读 · 0 评论 -
十四、重写与多态
方法隐藏是指当子类声明了一个与父类签名相同的非虚方法时,会隐藏父类中的同名非虚方法。这种情况下,调用该方法时,会根据引用的静态类型来决定调用哪个类的方法,而不是根据对象的动态类型。这与方法重写不同,方法重写是指当子类重写了父类的虚方法时,会覆盖父类中的同名虚方法。这种情况下,调用该方法时,会根据对象的动态类型来决定调用哪个类的方法,而不是根据引用的静态类型。无论是重写基类的方法还是重写基类的属性,这两者都必须是virtualabstract或override。不能重写非虚的、静态的方法或属性// 基类。原创 2024-03-06 22:47:42 · 855 阅读 · 0 评论 -
十三、类的继承、访问级别
base。原创 2024-03-06 11:08:25 · 890 阅读 · 1 评论 -
十二、类与声明
前面22讲的课基本上就做了两件事。原创 2024-03-03 18:36:52 · 437 阅读 · 1 评论 -
十一、事件详解
C#事件详解原创 2024-03-03 14:39:07 · 907 阅读 · 1 评论 -
十、委托详解
声明格式是仿照函数指针的格式//委托声明的时候,传入的是方法,不是数据。原创 2024-02-20 23:33:19 · 788 阅读 · 0 评论 -
九、传值输出引用数组具名可选参数、扩展方法
传值参数:参数的默认传递方式输出参数:用于除返回值外还需要输出的场景引用参数:用于需要修改实际参数值的场景数组参数:用于简化方法的调用具名参数:提高可读性可选参数:让参数拥有默认值扩展方法(this参数):为目标数据类型“追加”方法*/## 总结> * 传值参数:参数的默认传递方式> * 输出参数:用于除返回值外还需要输出的场景> * 引用参数:用于需要修改实际参数值的场景> * 数组参数:用于简化方法的调用> * 具名参数:提高可读性。原创 2024-02-08 21:16:22 · 857 阅读 · 0 评论 -
八、字段、属性、索引器和常量
最初人们用来保护字段的方法,在C++和Java中使用的就是这个办法。语法糖:将复杂的逻辑,简化成简单明了的逻辑,为的就是方便程序员。只读字段,既可以在声明的时候初始化,又可以在构造器中初始化。方法演变过来的,都是为了避免字段直接被外界访问到。而C#的属性,在Java的基础上还改变了一点。属性完整的声明和简略的声明的区别就在于,访问器。需要被多次调用,而年龄不会被多次调用的时候,C#中的属性,实际上就是Java中的。实例字段,用来表示对象实例的状态。静态字段,用来表示整个类型的状态。方法,这就是底层的逻辑。原创 2024-02-08 21:10:54 · 318 阅读 · 0 评论 -
七、表达式、语句详解
*程序写好之后语句虽然不会再改变* 但是因为输入的不一样,控制流是会发生改变的*/try {//将输入的字符串转化成double}else {");原创 2024-01-31 22:40:28 · 927 阅读 · 0 评论 -
六、操作符详解
类型转换操作符,也是一种方法的简记法类型转换操作符就相当于一个目标类型的实例的构造器,但是这个构造器不是写在目标类型里面而是写在被转换的类型里面/*当声明的是隐式转换的时候* (Monkey)就可以省略掉了*//** 编译器认为,不能将stone类型转换成Monkey类型* 那么我们可以自己定义转换*//** 把石头往别的类型转,所以需要在Stone类型中写* explicit 表示显式类型转换* 显式类型转换操作符就相当于一个目标类型的实例的构造器,原创 2024-01-27 12:34:24 · 882 阅读 · 1 评论 -
C# 五、方法的定义、调用与调试
C++中方法的声明和定义是分开的调用方法会传入实参,并且传入的实参需要与该方法所定义的形参匹配//计算圆的面积,圆柱的体积,圆锥的体积//计算圆的面积//计算圆柱的体积//计算圆锥的体积。原创 2024-01-23 17:46:38 · 364 阅读 · 1 评论 -
C#四、详解类型、变量与对象
例子二:ushort。原创 2024-01-23 17:41:27 · 812 阅读 · 1 评论 -
三、语言基本元素
i > 0;i--) {if (y > 1)//循环实现 1 加到 100i <= 100;i++)//递归实现1 加到 100if(x == 1)return 1;else {原创 2024-01-22 15:31:09 · 433 阅读 · 0 评论 -
二、类简析
NuGet包中的Entity Framework看不懂可以看这两篇文章。原创 2024-01-18 23:32:50 · 755 阅读 · 1 评论 -
C#创建实体数据模型报错:项目的目标框架不包含实体框架运行时程序集。请在项目的属性页中查看目标的框架信息
说说最近学习,遇到的一个问题,找解决办法弄了接近一个小时,简直受不了。创建实体数据模型的时候会报这个错项目的目标框架不包含实体框架运行时程序集。请在项目的属性页中查看目标的框架信息。原创 2024-01-17 16:23:02 · 922 阅读 · 0 评论 -
C#基础学习
C#学习打卡学习原则:C#的MSDN文档如何下载请看这篇文章C#语言文档可以直接浏览器搜C# Language Specification命令行Console太老了,没有框架了,低级版WPF和Web Forms一样,都是通过xml实现显示HelloWorld纯网络服务Windows Store Application(平板电脑)和WPF很像,不过显示界面是平板操作和WPF是一样的还是和WPF类似操作一样的和MVC类似操作工作流。原创 2024-01-16 21:41:28 · 365 阅读 · 0 评论