![](https://img-blog.csdnimg.cn/20190918140012416.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
C#
文章平均质量分 71
C#
修花锦年喵
https://github.com/xiunianjun/
展开
-
C#学习(16)------泛型、Partial类、枚举、结构体
一、泛型泛型跟其他的东西具有良好的正交性。即存在泛型类、泛型接口、泛型委托等等等。泛型对于成员膨胀和类型膨胀具有良好的作用。下面我们来看看实例。本次实例讲的是一个杂货铺,一开始只卖苹果:namespace ConsoleAppPractice{ class Program { static void Main() { Store store = new Store(); Box bo.原创 2021-12-26 18:45:37 · 234 阅读 · 0 评论 -
C#学习(15)------反射、特性、依赖注入
反射常常与接口、依赖反转原则一起使用。反射事实上是.Net框架的内容,不是C#语言的内容。对于托管类语言,反射很重要。单元测试、依赖注入、泛型编程,都基于反射机制。反射的实质其实就是:给我一个对象,我能在不知道它是什么静态类型,且不使用new操作符的情况下,再创建出一个与它同类型的新对象,并且能够访问其方法。从定义来看,反射有两方面好处。一方面,我们知道,使用new操作符,即是创造了一个紧耦合,直接地将所在类与new后的静态类型紧耦合在了一起。而使用反射,直接避免紧耦合的发生,降低了耦合度。原创 2021-12-24 16:47:56 · 1128 阅读 · 1 评论 -
C#学习(14)---接口、依赖反转、单元测试、接口隔离原则
从上节课来看,接口跟纯虚抽象类其实本质上很相似,可以说一模一样。所以接下来的过程中,请不要忘记,接口也是“类”,也可以声明变量,引用实例。接口从现实意义的角度来看,像是一种“协议”“契约”,是建立在使用者和提供者之间的。对于使用者,它规定了,“我想要什么”“我能要什么”;对于提供者,它规定了“你可以给出什么”。由于接口是契约,故它必须对双方透明公开,对合同双方可见,即接口一定是public的。本节课讲了接口的三层面/方面作用。下面逐一讲解。第一个作用,接口发挥“契约”作用,减少重复代码:u原创 2021-12-23 14:59:46 · 742 阅读 · 0 评论 -
C#学习(13)-----抽象类与开闭原则
开闭原则:如果不是为了修改bug或者优化/增添功能,不要乱改一个类的代码。即,应该封装那些稳定的固定的确定的成员,把不确定的成员作为抽象成员,给子类实现。一开始,为了减少重复代码和尽量减少对类的修改,引入了基类。 class Vehicle { private int _speed; public virtual int Speed { get { return _speed; } set { _speed = value; } }原创 2021-12-22 21:32:51 · 278 阅读 · 0 评论 -
C#学习12------类的继承、重写与多态
一、类的继承class A{......}class B : A{......}如此,则称B是A的子类/派生类,A是B的父类/基类。所有类的基类都是object类。派生类的内部原理其实是,先调用基类构造器,再一层一层往下调用,即在内部过程会创造一个基类的实例。因而修改子类对象时,创建的那个基类对象也会相应地被修改。同时,基类对象的东西如果没被修改,就会一直保存原来的值。base与this相对,引用的是上一层基类的对象,base只能引用一层。派生类在基类的基础上进行了原创 2021-12-19 09:44:35 · 1353 阅读 · 0 评论 -
C#学习(11)
namespace ConsoleAppPractice{ class Program { static void Main() {//不使用new创建实例,反射的基础 Type t = typeof(Student); object o = Activator.CreateInstance(t,"e",1); //dynamic o = Activator.CreateInstanc.原创 2021-12-18 15:32:38 · 242 阅读 · 0 评论 -
C#学习(10)-----事件
一、事件的基本概念事件是什么呢?他是一个东西,得能够发生,发生了就会给其他的东西通知。事件是类的成员。它使类或对象具有通知别的类或对象的能力。而当然,不仅仅有通知。有些事件,例如说手机响铃,会伴随着其他的消息,比如谁谁谁领导通知你开会,家人跟你聊天什么的。这种伴随着事件传达的信息称为事件参数。手机响铃会有很多种可能,而有些事件,其发生与通知本身就蕴含了一些信息,没有必要再给你其他的事件参数。比如红灯停绿灯行。因而,事件的功能=通知+可选的事件参数。它用与类或对象之间的动作协调与信息传原创 2021-12-04 16:12:25 · 1886 阅读 · 0 评论 -
C#学习(9)----委托
先贴上一段C语言的函数指针。#include <stdio.h>int Add(int x,int y){ return x+y;}int Sub(int x,int y){ return x-y;}int aha(int m,int n,int(*Calcu)(int x,int y)){ return Calcu(m,n);}int main(){ int m=100,n=10; int result1=aha(m,n,Add); int原创 2021-12-02 12:07:30 · 729 阅读 · 0 评论 -
C#学习(8)----方法参数
一、传值参数前面没有修饰符就是C里边的形参。普普通通,没啥可说。会创建副本,占用存储位置。有一点要注意。值类型的变量存储的是数值;但是引用变量存储的是对象的地址,所以如果对传值参数的引用变量操作,是会改变该对象的。但是如果对传值参数赋值一个新对象的地址,原来的实参牵着的对象不会改变。例子://输出结果:10 100 100,主函数的stu所指的对象在调用方法后成员改变。//两者的hashcode相同。namespace ConsoleAppPractice{ ...原创 2021-11-30 22:15:28 · 333 阅读 · 0 评论 -
C#学习(7)----类的成员,字段、属性、索引器、常量
C#的类型指的是类或者结构体,可能有以下成员:一、字段(field)表示与对象或类型相关联的变量。(类里面定义的int什么的,static与否)旧称成员变量。C语言的结构体中的就是字段。分为实例字段和静态字段。实例字段帮助实例存储数据,表示对象当前的状态。namespace ConsoleAppPractice{ class Program { static void Main() { List&l.原创 2021-11-21 19:26:12 · 908 阅读 · 0 评论 -
记录C一些有趣的代码
1.printf("%s%c",str,i%2 == 0 ? '\n':'\t');原创 2021-11-15 19:36:38 · 1845 阅读 · 0 评论 -
C#学习(6)-----表达式、语句
这个感觉没什么好说捏……表达式,命令,声明是编程语言的基本组件。表达式可以得到一个值、一个对象、一个方法、一个方法的重载、一个名称空间、一个类等等等。要注意的:1.此处只是得到这个方法,并不是要调用他(没用())类似于C的函数指针。 static void Main() { Action myAction = new Action(Console.WriteLine); }2.??:x是null吗?是的话原创 2021-11-14 10:50:48 · 307 阅读 · 0 评论 -
C#学习(5)----类型转换
最近考试周woc,数学也拉了,进度持续停滞~~最近看看坚持每天腾出半小时来刷刷C#的题目吧?在这里也记录一下我的进度。类型转换,可以分为显式类型转换和隐式类型转换。还可以自定义类型转换操作符。一、隐式类型转换隐式类型转换又有三种情况。1.不丢失精度的转换跟C语言在这方面差不多其实。2.子类向父类的转换namespace ConsoleAppPractice{ class Program { static void Main()..原创 2021-11-09 01:56:03 · 369 阅读 · 0 评论 -
C#学习(4)-----操作符
运算符中一些简单的其实跟C语言差不多,但是还是很有C#特色的。下列C#所有运算符:操作符其实有时候不仅仅有单一的意义。操作符是什么意思取决于他操作的变量类型。如下面代码中:staticvoidMain(){stringstr1=Console.ReadLine();stringstr2=Console.ReadLine();Console.WriteLine(str...原创 2021-11-07 10:54:11 · 744 阅读 · 0 评论 -
C#学习(3)---变量的下部分、方法的定义与调用
其实方法这节课感觉跟C语言里面的函数差不多,故我就不写太多了。一、变量1.值类型的变量值类型的变量没有实例,所谓的实例与变量合二为一。值类型按类型的实际大小分配内存,其中高位存储在高地址。2.引用类型的变量引用类型的变量在栈中,以四个字节,储存,存储在堆中的对象,的地址。一看到是引用类型便会分配四个字节,且会帮你初始化为NULL。3.变量的默认值如果是成员变量(声明在类中),会由构造器帮你赋值刷成0;如果是局部变量,不初始化会编译错误。二、方法1、方法的由原创 2021-11-06 14:53:26 · 354 阅读 · 0 评论 -
C#学习(2)---数据类型与变量(部分)
一、上次学习学到了方法。接下来看看一个调用方法的例子:计算一到x的和。分别使用递归和迭代两种,还引入了静态成员与实例成员引用的不同。//使用迭代和实例成员namespace ConsoleAppPractice{ class Program { static void Main(string[] args) { SumNumber result = new SumNumber(); Console.Wr原创 2021-11-04 21:01:57 · 103 阅读 · 0 评论 -
C#学习(1)-----名称空间、类、标识符
一、名称空间与类类库、程序集、名称空间、类名称空间中的类可以来自不同类库,一个类库也可以有多个名称空间。要在程序中使用类,要么得在类之前加上名称空间.,要么在程序开头使用using 名称空间。二、类类相当于一个具体事物的概念,而对象(又称实例)则算是一个具体的事物。用new操作符可以新定义一个实例。需要使用引用变量来储存一个实例。相当于小孩与气球。气球没有小孩牵着就会很快飞走,空间被释放。可以有多个小孩通过多根线牵着同一个气球(像是指针)。 Form a = new Form();原创 2021-11-03 14:25:19 · 262 阅读 · 0 评论