![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C#
文章平均质量分 64
camellias_
这个作者很懒,什么都没留下…
展开
-
C#(四十五)之线程池
C#(四十五)之线程池原创 2022-07-20 16:33:42 · 1779 阅读 · 3 评论 -
C#(四十四)之线程死锁
C#(四十四)之线程死锁原创 2022-07-20 16:31:42 · 808 阅读 · 1 评论 -
C#(四十三)之线程Mutex互斥
C#(四十三)之线程Mutex互斥原创 2022-07-20 16:29:41 · 781 阅读 · 0 评论 -
C#(四十二)之线程同步、互锁
C#(四十二)之线程同步、互锁原创 2022-07-20 16:28:46 · 1403 阅读 · 0 评论 -
C#(四十一)之线程
C#(四十一)之线程原创 2022-07-20 16:27:39 · 380 阅读 · 0 评论 -
C#(四十)之stringBuilder类
C#(四十)之stringBuilder类原创 2022-07-20 16:26:37 · 4584 阅读 · 0 评论 -
C#(三十九)之关于string的一些函数
C#(三十九)之关于string的一些函数原创 2022-07-20 16:25:04 · 633 阅读 · 0 评论 -
C#(三十八)之StreamWriter StreamWriter使用方法及与FileStream类的区别
C#(三十八)之StreamWriter StreamWriter使用方法及与FileStream类的区别原创 2022-07-20 16:23:56 · 9845 阅读 · 0 评论 -
C#(三十七)之基于流的文件操作(FileStream)
C#(三十七)之基于流的文件操作(FileStream)原创 2022-07-11 09:40:02 · 1716 阅读 · 0 评论 -
C#(三十六)之文件夹、路径、环境特殊目录类
C#(三十六)之文件夹、路径、环境特殊目录类原创 2022-07-11 09:39:08 · 933 阅读 · 0 评论 -
C#(三十五)之在滚动窗口中绘图
C#(三十五)之在滚动窗口中绘图原创 2022-07-11 09:38:17 · 305 阅读 · 0 评论 -
C#(三十四)之坐标变换
C#(三十四)之坐标变换原创 2022-07-11 09:37:25 · 2147 阅读 · 0 评论 -
C#(三十三)之路径(Path)
路径就是定多个路径点,比如用直线画一个五角星原创 2022-07-11 09:36:26 · 1195 阅读 · 0 评论 -
C#(三十二)之Windows绘图
Windows绘图原创 2022-06-25 10:10:26 · 1245 阅读 · 3 评论 -
C#(三十一)之自定义事件
自定义事件原创 2022-06-25 10:08:01 · 3141 阅读 · 0 评论 -
C#(三十)之C#comboBox ListView treeView
C#comboBox ListView treeView原创 2022-06-25 10:07:12 · 754 阅读 · 0 评论 -
C#(二十九)之C#listBox checkedlistbox imagelist
C#原创 2022-06-22 10:26:52 · 1134 阅读 · 0 评论 -
C#(二十八)之C#鼠标事件、键盘事件
C#原创 2022-06-22 10:25:30 · 6460 阅读 · 0 评论 -
C#(二十七)之C#窗体应用
C#原创 2022-06-22 10:23:16 · 6676 阅读 · 0 评论 -
C#(二十五)之C#对象比较
(一):比较对象的方法概念有点多,看看就行了:1:ReferenceEquals:Object.ReferenceEquals(left, right)静态方法:从名称中便可知它用来比较两者是否是相同的引用,我们也永远不应该去重写该方法。它对于值类型对象的比较永远返回false;对于两个null的比较永远返回true。此方法必须使用类来调用。cat f1 = new cat(5);cat f2 = new cat(5);// ReferenceEqualsConsole.WriteLine("原创 2022-03-04 10:01:51 · 1876 阅读 · 0 评论 -
C#(二十四)之.NET框架
1:.NET是一个平台。每一个变量都有明确的数据类型:优点:安全、垃圾回收等。缺点:有些地方性能较低。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dYI3x0vw-1645668094282)(https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/e20a2572b5c6470eb8cdf466066fbb8e~tplv-k3u1fbpfcp-zoom-1.image “1554793530918987.png”)]2原创 2022-03-03 16:27:59 · 430 阅读 · 0 评论 -
C#(二十三)之C#中的is运算符
1:is运算符:is运算符用来判断对象是不是某种类型 /* C#主要的运行函数,就是main函数 */ static void Main(string[] args) { // is运算符 double x = 100; Console.WriteLine(x is double); // 输出:True }2:向下转换基类转换为派生类:向下原创 2022-03-01 09:15:50 · 10094 阅读 · 1 评论 -
C#(二十二)之抽象方法 密封方法 base new 关键字
1:普通方法的隐藏(new)标题看了很高深,其实就是在派生类中使用new关键字重写其继承的类中的某个方法。New关键字可以省略,但是最好不要省略。基类中:// 普通方法 public void sleeper() { Console.WriteLine("我是基类中的方法"); }派生类中:// 重基类中的sleeper普通方法 public new void sleeper() {原创 2022-02-24 09:59:16 · 378 阅读 · 0 评论 -
设计模式(十六)之抽象工厂模式
关于工厂模式,我们之前说过了工厂模式,简单工厂模式。这篇日志,我们来说一下抽象工厂模式,那么,何为抽象工厂模式呢?抽象工厂模式:提供一个创建一系列相关或互相依赖对象的接口,而无需指定他们具体的类下面我们来写一个简单的小例子,之后,我们再分析抽象工厂模式的优缺点及三种工厂模式各自的特点。以德国大众集团为例,他生产奥迪和大众汽车,其二者所使用的发动机和变速器都是截然不同的。那这样说来,实现这个例子。需要抽象工厂类:AbstractFactory.cs 含有发动机接口与变速器接口,返回其二者各自的对象原创 2020-08-21 16:45:29 · 134 阅读 · 0 评论 -
设计模式(十五)之观察者模式
观察者模式(Observer Pattern)是设计模式中行为模式的一种,它解决了上述具有一对多依赖关系的对象的重用问题。此模式的参与者分为两大类,一类是被观察的目标,另一类是观察该目标的观察者们。正因为该模式是基于“一对多”的关系,所以该模式一般是应用于由一个目标对象和N个观察者对象组成(当然也可以扩展为有多个目标对象,但我们现在只讨论前者)的场合。当目标对象的状态发生改变或做出某种行为时,正在观察该目标对象的观察者们将自动地、连锁地作出相应的响应行为。模式中具有的角色抽象主题(Subject):原创 2020-08-15 14:18:08 · 1575 阅读 · 0 评论 -
设计模式(十四)之建造者模式
建造者模式(Builder):将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示使用角色:Builder(抽象建造者)ConcreteBuilder(具体建造者,可能有多个)Product(产品)Director(指挥者)建造者UML图:建造者模式精髓:建造者模式使得建造代码与表示代码的分离,可以使客户端不必知道产品内部组成的细节,从而降低了客户端与具体产品之间的耦合度。建造者模式实现:我去饭店吃饭,饭店的招牌菜是西红柿炒鸡蛋,饭店很火,有多位厨师(建造者类),为原创 2020-08-02 14:47:00 · 139 阅读 · 0 评论 -
设计模式(十三)之外观模式
外观模式(Facade)的定义:为子系统中的一组接口提供一个一致的界面,外观模式定义了一个高层接口,这个接口使得这个子系统更加容易使用。系统角色:1、外观角色(Facade)外观模式的核心,它被客户角色调用,它熟悉子系统的各项功能,可以在内部根据需求预定几种功能的组合;2、子系统角色(SubSystem)实现了子系统的功能,它内部可以有系统内的相互交互,也可以由供外界调用的接口。优点:1: 减少系统相互依赖。2:提高灵活性。3: 提高了安全性。缺点:1: 不符合开闭原则,如果要改东原创 2020-08-01 14:22:24 · 152 阅读 · 0 评论 -
设计模式(十二)迪米特原则(最少知识原则)
迪米特(最少知识)法则:如果两个类不必彼此直接通信,那么这两个类就不应当发生直接的相互作用。如果其中一个类需要调用另一个类的某一个方法的话,可以通过第三者转发这个调用。根本思想是:强调了类之间的松耦合,类之间的耦合越弱,越有利于复用,一个处在弱耦合的类被修改,不会对有关系的类造成波及。这个法则体现的是“高内聚,低耦合”的设计思想。举个例子:我刚到公司上班,电脑坏了,需要技术部派人来给我修电脑,我不需要认识来给我修电脑的人是谁,我只需要认识技术部门的主管,具体他拍谁来给我修电脑,那是他的事。我的目的是赶原创 2020-07-31 13:36:36 · 227 阅读 · 0 评论 -
设计模式(十一)之模板方法模式
**模板方法模式:定义一个操作中的算法骨架,而将一些步骤延迟到子类中,模板方法使得子类可以不改变一个算法的结构即可重新定义该算法的某些特定步骤。模板方法模式角色:1:抽象类角色(AbstractClass):定义一个模板方法(TemplateMethod),在该方法中包含着一个算法的骨架,具体的算法步骤是PrimitiveOperation1方法和PrimitiveOperation2方法,该抽象类的子类将重定义PrimitiveOperation1和PrimitiveOperation2操作。2:具原创 2020-07-25 09:07:19 · 151 阅读 · 0 评论 -
设计模式(十)之原型模式
原型模式:就是从一个对象再创建另一个可定制的对象,而且不需要知道任何创建的细节。原型模式中的角色:抽象原型类(Abstract Prototype):提供一个克隆接口具体原型类(Concrete Prototype): 及实现了克隆接口的具体原型类原型模式的必要条件:重写抽象类中的Clone方法或者重写ICloneable中的Clone方法。也就是说:要实现克隆的这个类,必须实现其Clone方法。废话不多说:上例子,我这里参考《大话设计模式》中简历的例子:首先,正常来实现:简历类:Resu原创 2020-06-15 19:46:06 · 136 阅读 · 0 评论 -
设计模式(九)之工厂模式
工厂模式:定义一个用于创建对象的接口,让子类来决定实例化哪一个类,工厂方法使一个类的实例化延迟到子类。之前我们看过简单工厂类,使用的是计算器作为例子。代码如下:简单工厂类Factory.csusing System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Thr...原创 2020-04-30 16:50:01 · 139 阅读 · 0 评论 -
设计模式(八)之静态代理模式
代理模式:为其他对象提供一种代理以控制对这个对象的访问。其通用设计图如下图所示:精髓是RealSubject类和Proxy类都实现Subject,使用Proxy类来限制对RealSubject类的访问Subject抽象主题类: 抽象主题类可以是抽象类也可以是接口,是一个最普通的业务类型定义,无特殊要求RealSubject具体角色:也叫做被委托角色,被代理角色。是业务逻辑的具体执行者。P...原创 2020-04-17 00:47:43 · 204 阅读 · 0 评论 -
设计模式(七)之装饰模式
装饰器模式,顾名思义,就是对已经存在的某些类进行装饰,以此来扩展一些功能。下图为其结构图:四个主要角色分别为:抽象构件(Component)角色:给出一个抽象接口,以规范准备接受附加责任的对象。具体构件(ConCreteComponent)角色:定义一个将要接受附加责任的类。装饰(Decorator)角色:持有一个构件(Component)对象的实例,并定义一个与抽象构件接口一致的接口...原创 2020-03-23 22:55:30 · 187 阅读 · 0 评论 -
设计模式(六)之里氏替换原则
里氏替换原则,为继承定义规范。里氏替换原则有如下特点:代码共享,减少创建类的工作量提高代码的重用性提高代码的可扩展性提高产品代码的开放性继承侵入性 只要继承,必须拥有父类的内容降低代码的灵活性,子类必须拥有父类的属性和方法增强耦合性。里氏替换原则:有一功能P1,由类A完成。现需要将功能P1进行扩展,扩展后的功能为P,其中P由原功能P1与新功能P2组成。新功能P由类A的子类B来完...原创 2020-03-15 15:05:34 · 108 阅读 · 0 评论 -
设计模式(五)之依赖倒转原则
依赖倒置原则的包含如下的三层含义: 高层模块不应该依赖低层模块,两者都应该依赖其抽象 抽象不应该依赖细节 细节应该依赖抽象就是面向接口编程,采用依赖倒置原则可以减少类间的耦合性,提高系统的稳定性,降低并行开发引起的风险,提高代码的可读性和可维护性。举个例子,小明开奔驰车。我们需要两个底层模块,司机类,奔驰车类。以及调用其二者的高层模块正常来写是这样子的:Pro...原创 2020-03-05 21:37:49 · 178 阅读 · 0 评论 -
设计模式(四)之开放封闭原则
开放封闭原则:软件实体(类、模块、函数等等)应该可以扩展,但是不可以修改。也就是如果需求发生变化导致程序中多个依赖模块都发生了级联的改动,就说明这个程序是有问题的,程序变得相对脆弱、无法重用。开放封闭原则就相对的解决了这个问题,它强调的是你设计的模块应该从不改变(绝对不改变是不可能的,只能相对少改动)。当需求变化时,你可以通过添加新的代码来扩展这个模块的行为,而不去更改那些已经存在的可以工作的...原创 2020-02-27 13:40:08 · 457 阅读 · 0 评论 -
设计模式(三)之单一职责原则
单一职责原则:官方给的说法是:就一个类而言,应该仅有一个因其他变化的原因。说白了就是,一个类只负责一项职责。最简单也是最难的原则。难处在于对职责进行划分。单一职责原则提出了一个编写程序的标准,用“职责”或“变化原因”来衡量接口或类设计得是否优良,但是“职责”和“变化原因”都是不可度量的,因项目而异,因环境而异。软件设计真正要做的内容,就是发现职责并把那些职责互相分离。单一职责原则可以使类的...原创 2020-02-21 13:37:15 · 463 阅读 · 0 评论 -
设计模式(二)之策略模式
策略模式:定义了算法家族,分别封装起来,让其之间可以互相替换,此模式让算法的变化,不会影响到使用算法的客户。下边使用例子来具体分析:制作一个商场收银的软件,营业员根据客户购买的单价和数量,向客户收费。并附带打折的选项。效果如下图所示:主要部分代码:using System;using System.Windows.Forms; namespace strategy{ p...原创 2020-02-20 16:19:40 · 145 阅读 · 0 评论 -
C#(九)之循环语句for while do-while break continue
C#中的循环语句:do-while、while、for其实还有个foreach,这个等看完数组之后再补充吧1:for循环int a = 10;for (int i = 0; i <= a; i++ ){ Console.WriteLine(i);}//输出结果:0 1 2 3 4 5 6 7 8 9 10使用for实现死循环for (; ; ){a++;Con...原创 2019-06-18 08:54:03 · 434 阅读 · 0 评论 -
C#(八)之判断语句IF SWITCH
C#中的判断语句IF/SWITCH1:IF / ELSEIF / ELSEIf 满足条件择执行;多个elseif时,其中有一个满足条件,那个之后的elseif都不会执行;else上面都不满足时执行;C#支持三元运算符,用法同于PHPbool a = true; bool c = true; bool b = false; ...原创 2019-06-17 08:49:00 · 426 阅读 · 0 评论