C#进阶之路——10. C# 接口 基础:接口 Interface接口是方法的抽象,如果不同的类有同样的方法,那么就应该考虑使用接口。接口名称:始终冠以大写字母I接口不会出现方法体,没有修饰符,实现类提供方法体并为其分配一些修饰符,如果类没有实现该方法会编译错误。 接口示例:定义ILogger接口实现文本日志输出using System;public interface ILogger{void Log(string Info);}public class TextLogger : ILogger{ public void Log(str...
线程的概念线程的职责是对CPU进行虚拟化。CPU为每个进程都提供了该进程专用的线程(功能相当于cpu),应用程序如果进入死循环,那么所处的进程会"冻结",但其他进程不会冻结,它们会继续执行!线程的开销因为是虚拟化CPU,所以也会有空间(内存耗用)和时间(执行性能)上的开销。具体的开销:线程内核对象(thread kernel object)
操作系统为创建的每个线程都会分配并初始化这种数据结构。数据结构包含一组对线程进行描述的属性,还...
其实对于C#异常处理大家都不陌生,但是对于在WeiApi上的异常处理实际上也和传统异常处理区别不大,但是却经过封装可以让异常更加友好,https://docs.microsoft.com/en-us/aspnet/web-api/overview/error-handling/exception-handling,通过微软的官方介绍,我们可以知道WeiApi可以简单概述为三种异常,接下来我们围绕这三种异常给出例子,如何封装和处理以上三种异常异常过滤 异常过滤器实现了System.Web.Http.Filte...
前言:前篇搭建了下WCF的代码,就提到了DTO的概念,对于为什么要有这么一个DTO的对象,上章可能对于这点不太详尽,在此不厌其烦再来提提它的作用:从安全上面考虑,领域Model都带有领域业务,让Client端引用Domain Model就意味着Client端可以绕过应用层直接完成业务逻辑的调用,这样是一种不安全的机制。从对象传递效率上面考虑,领域Model带有业务,而这些业务一般对于UI层是没有意义的,所以带有业务的model传递起来会加重网络负...
可空值类型,正如字面意义上的,是可以为NULL的值类型。这个东西存在的意义可以解决比如数据库的的Int可以为NUll的情况,使得处理数据库数据更简单。实际上可空值类型就是Nullable<T>这个泛型值类型,而C#有一种更简单的语法糖是int?这种用法:Nullable<Int32> 数据库类型 = null;
float? 可以为空的浮点类型 = null;
DateTime? 更多的值类型 = null;可空值类型的更多玩法在大多数时候用C#去操作可空值类型,完全可以把它当做一个...
本文参考的博文出处:http://www.cnblogs.com/stoneniqiu/p/4857021.html总体说明:(1)、理解硬件线程和软件线程 硬件线程也称为逻辑内核,一个物理内核可以使用超线程技术提供多个硬件线程。所以一个硬件线程并不代表一个物理内核;Windows中每个运行的程序都是一个进程,每一个进程都会创建并运行一个或多个线程,这些线程称为软件线程。硬件线程就像是一条泳道,而软件线程就是在其中游泳的人。(2)Net Framework4 引入了...
简介 在之前的 C# 消息队列之 RabbitMQ 基础入门 中介绍了 RabbitMQ 的基本用法,其实要更全面的掌握 RabbitMQ 这个消息队列服务,我们还需要掌握以下内容: 1. 轮询分发 2. 消息响应 3. 公平分发 4. 消息持久化 1. 轮询分发 默认情况下,RabbitMQ 会按照消息顺序依次分发给每个消费者,也就是每个消费者接收到的消息基本是平均的,这种分发方式称之为轮询分发。话不多说看示例: 1) 生产者代码(其他代码省略) //随...
C#进阶系列——WebApi 接口测试工具:WebApiTestClient
?阅读目录一、WebApiTestClient介绍
二、WebApiTestClient展示
三、WebApiTestClient使用1、如何引入组件
2、如何使用组件四、总结
正文
前言:这两天在整WebApi的服务,由于调用方是Android客户端,Android开发人员也不懂C#语法,API里面的接口也不能直接给他们看,没办法,只有整个详细一点的文档呗。由于接口个数有点多,每个接口都要详细说明接口作用、参数类型、返回值...
集合是我们编程时候常用的类库,本文主要讨论具体每个类型的区别,每个集合对应的时间复杂度。先上一个时间复杂度图:
C#集体类型( Collections in C#)集合是.NET FCL(Framework Class Library)中很重要的一部分(.net core 中是corefx),也是我们开发当中最常用到的功能之一,几乎是无处不在。俗话说知其然,知其所以然,平常看到IEnumerable,IEnumerator,ICollection是不是知道他们之间各自的区别?除了List和Dictionary以...
为什么要使用泛型(泛型可以继承的):
1,重用代码;
2,类型安全:编译时检查,尽早暴露问题(相对object而言);
3,提高性能:编译时生成,避免装箱/拆箱;
泛型的类型约束where T:
1,struct:只能是值类型,由struct定义;
2,class:只能是引用类型,class定义;
3,new():必须包含一个公共的无参构造函数;
4,person:只能是person及其子类;
5,ISort:只能是ISort及其实现;
可以为多个泛型参数定义多个约束,也可以为一...
最近在写代码的过程中用到了Linq查询,在查找资料的过程中发现网上的资料千奇百怪,于是自己整理了一些关于Linq中容易让人困惑的地方。
本文全部代码基于:UserInfo与Class两个表,其中Class中的UserId与UserInfo中的Id对应 本文唯一访问地址:http://www.cnblogs.com/yubaolee/p/BestLinqQuery.html
linq联合查询
内联查询
内联是一个实际使用频率很高的查询,它查询两个表共有的且都不为空的部分 from user in UserInfojoin c in...
4,测试用例及反思我们用下面的例子来测试下这个函数
Customer c = new Customer(); c.City = "London"; c.Phone = "23236133"; var q = db.Find<Customer>(c).ToList();
其生成的sql语句为:
SELECT [t0].[CustomerID], [t0].[CompanyName], [t0].[ContactName], [t0].[ContactTitle], [t0].[Address], [t0].[City], [t0].[Region], [t0].[PostalCode], [t0].[Country], [t0].[Phon...
11.4 let 子句与透明标识符
11.4.1 用let来进行中间计算
这段代码运行正常,不过它调用了“可怕的” Length属性两次——一次是对用户进行排序,一次用于显示。var query = from user in SampleData.AllUsersorderby user.Name.Length //first select user.Name;foreach (var name in query){Console.WriteLine("{0}: {1}", name.Length, name); //seconed}这正是let子句的用武之地,它对一个表达式进行求值,并引入一个新的范围变...
泛型基础知识
1.什么是泛型?
2.如何声明和使用泛型
3.泛型的好处和原理
4.泛型类,泛型方法,泛型接口,泛型委托
5.泛型约束
6.协变 逆变
7.泛型缓存
1.定义一个委托,并调用class Program{private delegate string GetAstring();static void Main(string[] args){int X = 100;//使用委托类型创建实例//GetAstring firststringmethoned = new GetAstring(X.ToString); 指向X中的tostring//string Y = firststringmethoned(); 通过委托去调用firststringmethoned中的XGetAstring Y = X.ToString; string S = Y.Invoke(); //通过i...