Billpeng Space

技术源自生活
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
< 2025年2月 >
26 27 28 29 30 31 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 1
2 3 4 5 6 7 8

随笔分类 -  C#基础概念

摘要:public override bool Equals(object obj) { //obj不为空 if (obj == null) return false; //是否同一个引用 if (ReferenceEquals(this, obj)) return true; //是否不是聚合根 IAg 阅读全文

posted @ 2020-08-25 02:17 billpeng 阅读(217) 评论(0) 推荐(0) 编辑

摘要:原文:https://www.cnblogs.com/Dewumu/p/12067573.html 一、内存上连续存储,节约空间,可以索引访问,读取快,增删慢 Array:在内存上连续分配的,而且元素类型是一样的,可以坐标访问;读取快--增删慢,长度不变 { //Array:在内存上连续分配的,而且 阅读全文

posted @ 2020-06-11 20:58 billpeng 阅读(5883) 评论(0) 推荐(0) 编辑

摘要:/// <summary> /// 当你在遍历的过程中删除某个对象的时候,这时被删除的对象之后的所有对象都会往前移动一位。 /// 如果想正确的遍历整个list就需要让i从0开始重新遍历。 /// 我这里的i=-1是因为当我们进行下一次循环的时候i++,所有刚好下次循环的时候是用0开始。 /// 缺 阅读全文

posted @ 2020-04-20 03:42 billpeng 阅读(1356) 评论(0) 推荐(0) 编辑

摘要:/// <summary> /// 转换功能(可转空类型) /// </summary> /// <param name="value">需转换的对象</param> /// <param name="convertsionType">转换的类型</param> /// <exception cre 阅读全文

posted @ 2020-04-17 11:15 billpeng 阅读(171) 评论(0) 推荐(0) 编辑

摘要:async await的教程:https://www.cnblogs.com/zhaoshujie/p/11192036.html 异步方法: 调用时不使用await 结果: 1、主线程+异步方法内await之前的代码按顺序执行 2、await开始(开新线程) 3、跳出异步方法(不等待),继续执行主 阅读全文

posted @ 2019-10-27 11:26 billpeng 阅读(386) 评论(0) 推荐(0) 编辑

摘要:Efcore迁移 Add-Migration XX:1、根据模型的实际结构对比当前快照,从而生成新迁移文件的Up和Down方法2、根据模型的实际结构修改快照和新迁移文件 Remove-Migration一、我们定义:1、最后一次的迁移文件,称为:A2、倒数第二次的迁移文件,称为:B 二、判断:1、快 阅读全文

posted @ 2019-10-25 11:49 billpeng 阅读(850) 评论(0) 推荐(0) 编辑

摘要:1、dynamic不可以跨程序集使用 2、需要在Test的AssemblyInfo.cs中里加 [assembly: InternalsVisibleTo("DFYYDream.UI.Web")] 代码 是在定义方(内存指针最终指向方)的AssemblyInfo.cs中,插入 [assembly: 阅读全文

posted @ 2019-10-22 15:09 billpeng 阅读(137) 评论(0) 推荐(0) 编辑

摘要:Fakes自动生成的Shim代码,有两种可能:(目前尚不清楚生成规律) 定义方式: 阅读全文

posted @ 2019-10-22 13:49 billpeng 阅读(419) 评论(0) 推荐(0) 编辑

摘要:stub常用于虚拟接口、类、方法,无法重写静态方法(stub需要传递到具体调用代码中) shim常用于重写静态方法(在ShimsContext.Create()作用域内,拦截Runtime动态修改方法的实现,静态方法无需传递) shim如果用于重写非静态方法,依然需要传递 以下两种的目的都是虚拟To 阅读全文

posted @ 2019-10-22 11:33 billpeng 阅读(556) 评论(0) 推荐(0) 编辑

摘要:Moq是无法直接模拟静态方法的,解决方式有两种: 1、需要修改正式代码,在源代码中建一个新的方法把静态方法包起来,调用的时候源代码调用时调用新方法而不是原来的静态方法。 在测试的时候,Mock掉这个新的方法,以达到模拟的目的 原来: 替换后: 2、由于Mircosoft Fakes框架可以使用Shi 阅读全文

posted @ 2019-10-21 16:19 billpeng 阅读(1867) 评论(0) 推荐(0) 编辑

摘要:为什么要做单元测试 通常我们在做任何工作会先考虑它的回报,编写代码更是如此。如果单元测试的作用不大,没有人会愿意再写一堆无用的代码,那么单元测试到底能够给我们带来什么优点呢?如下: 便于后期重构。单元测试可以为代码的重构提供保障,只要重构代码之后单元测试全部运行通过,那么在很大程度上表示这次重构没有 阅读全文

posted @ 2019-10-21 12:58 billpeng 阅读(2514) 评论(0) 推荐(0) 编辑

摘要:当使用Moq来Mock一个具体的类,类里的方法为virtual时,Moq会将当前类,所有的virtual方法默认重写成空实现。 如果我们想要访问真实的代码,有两种方法 1、在创建Mock时,设置CallBack为True:则当前类里所有的方法全访问真实代码 2、只想单个访问真实代码,可以Setup此 阅读全文

posted @ 2019-10-19 23:41 billpeng 阅读(773) 评论(0) 推荐(0) 编辑

摘要:如果参数中有列表,列表项为引用类型时,则会判断列表项是否为同一引用 列表本身不判断 阅读全文

posted @ 2019-10-18 18:09 billpeng 阅读(162) 评论(0) 推荐(0) 编辑

摘要:C# 6.0: https://www.cnblogs.com/yinrq/p/5600530.html C# 7.0: https://www.cnblogs.com/cncc/p/7698543.html C# 8.0: https://www.cnblogs.com/springsnow/p/ 阅读全文

posted @ 2019-10-14 12:21 billpeng 阅读(239) 评论(0) 推荐(0) 编辑

摘要://Type类的函数 class Type bool IsInstanceOfType(object); //判断对象是否是指定类型 //类型可以是父类,接口 //用法:父类.IsInstanceOfType(子类对象) bool IsAssignableFrom(Type) //判断两个类型的关系 //类型可以是父类... 阅读全文

posted @ 2019-05-19 11:35 billpeng 阅读(4694) 评论(0) 推荐(0) 编辑

摘要:using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace MyTest{ class Program { static void Main(string[] args) { MyClass first = new MyClass(); first.value = "原值"; MyClass second = ... 阅读全文

posted @ 2014-01-07 19:28 billpeng 阅读(245) 评论(1) 推荐(0) 编辑

摘要:IList是 ICollection 接口的子代,并且是所有非泛型列表的基接口。IList 实现有三种类别:只读、固定大小和可变大小。无法修改只读 IList。固定大小的 IList 不允许添加或移除元素,但允许修改现有元素。可变大小的 IList 允许添加、移除和修改元素。ICollection接口是 System.Collections 命名空间中类的基接口。ICollection 接口扩展 IEnumerable;IDictionary 和 IList 则是扩展 ICollection 的更为专用的接口。 IDictionary 实现是键/值对的集合,如 Hashtable 类。 ILi 阅读全文

posted @ 2013-05-10 09:39 billpeng 阅读(305) 评论(0) 推荐(0) 编辑

摘要:一、类继承1 public class Father2 {3 }4 public class Child : Father5 {6 }二、接口继承1 public interface IBreath { }2 public interface IRun { }3 4 public class Animal : IBreath, IRun5 { }三、实现 1 public interface ISpeak 2 { 3 void Speak(); 4 } 5 public class Person : ISpeak 6 { 7 ... 阅读全文

posted @ 2013-04-30 18:26 billpeng 阅读(325) 评论(0) 推荐(0) 编辑

摘要:值类型没有标识,只记录其他类值,所有属性都是只读,只能通过new来构造新的对象VALUE OBJECT 的设计包括共享和复制。 FLYWEIGHT(享元)模式可以实现共享VALUE OBJECT共享和复制的使用以下情况使用共享1)节省数据库空间或减少对象数量是关键要求时2)当通信开销很低时(中央服务器)3)共享对象被严格限定不可变的时候如果:用户中有对象:联系地址,而订单中有用户对象,并且要记下用户究竟将订单送到哪个地址上,此时,联系地址的ID就有标识的意义,所以这个时候地址就成了实体了。总之,实体和值对象在不同的项目中(甚至是同一项目的不同阶段) ,都是会转化的,转化的依据就是“需求”。实体 阅读全文

posted @ 2012-10-01 02:51 billpeng 阅读(1180) 评论(0) 推荐(0) 编辑

摘要:1.接口回调:把接口当做参数传递,可以提高功能的可扩展性 2.功能划分:可以划分不同的功能,用显示接口(我们常用的是隐式接口)可以更好的进行功能划分。比如:管理员可以增删改查,而录入员只能新增和查看3.在各类设计模式中上层代码通过接口调用底层代码,以减少认底层代码的修改,只需要在上层调用的地方实例化不同的类,并传进来就可以了4. 注入依赖5.对于不同的类,使用相同接口时功能的约束。 6.使用回调,可以提高功能的可扩展性 如:我们如果把clsProject这个类封成一个组件,那么当我们的用户需要要扩充功能的时候,我们只需要在外部做很小的修改就能实现,可以说根本就用不着改动我们已经封好组件!是不是 阅读全文

posted @ 2012-09-25 13:52 billpeng 阅读(293) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示