【C#使用BitBlt进行窗口抓图】教程文章相关的互联网学习教程文章

C#之实体类(第二章)

一、为什么要用实体类? | 使程序简洁易懂,便于维护。 | 暗合接口不变原则。 | 体现面向对象思想。 举例说明: 不用实体类的三层 假如程序有所变动,需要增加一个参数,学生年龄 用实体类的三层 同样增加一个参数,学生年龄 很明显的看出,用实体类之后,代码明显变得简洁,面向对象封装思想。 最重要的是,如果将来有所改动,只需要改...

C#基础——switch语句【代码】

public int ChargeTypeCode(string typeCode){int chargeNum;switch (typeCode){case "":chargeNum = 0;break;case "12":chargeNum = 1;break;default:break;}return chargeNum;} 上面语句会提示错误,因为chargeNum并没有被赋予初始值,即使实在switch中出现复制语句也不行,因为可能会出现default没有复制的现象。 int chargeNum;switch (typeCode){case "":chargeNum = 0;break;case "12":chargeNum = 1;break;defau...

C# Task详解【代码】【图】

C# Task和async/await详解什么是异步同步和异步主要用于修饰方法。当一个方法被调用时,调用者需要等待该方法执行完毕并返回才能继续执行,我们称这个方法是同步方法;当一个方法被调用时立即返回,并获取一个线程执行该方法内部的业务,调用者不用等待该方法执行完毕,我们称这个方法为异步方法。异步的好处在于非阻塞(调用线程不会暂停执行去等待子线程完成),因此我们把一些不需要立即使用结果、较耗时的任务设为异步执行,可以...

微信 js sdk C# 版 invalid signature 问题解决

采用Senparc.Weixin SDK服务器端代码:using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using Senparc.Weixin.MP.CommonAPIs; using Senparc.Weixin.MP.Helpers; using Senparc.Weixin.Exceptions;namespace Stock.weixin {public partial class wxShare : System.Web.UI.Page{public string timestamp = string.Empty;public stri...

【转】编写高质量代码改善C#程序的157个建议——建议109:谨慎使用嵌套类【代码】

建议109:谨慎使用嵌套类使用嵌套类的原则是:当某类型需要访问另一个类型的私有成员时,才将它实现为嵌套类。一个典型的例子是在实现集合时,要为集合实现迭代器,这时用到了嵌套类。代码如下所示:publicclass ArrayList : IList, ICollection, IEnumerable, ICloneable {//省略publicvirtual IEnumerator GetEnumerator(){returnnew ArrayListEnumeratorSimple(this);}[Serializable]privatesealedclass ArrayListEnumeratorSim...

《Effective C#》条款8:确保0为值类型的有效状态

.NET系统的默认初始化机制会将所有的对象设置为0[14]。对于值类型来讲,我们无法阻止其他程序员将其所有的成员都初始化为0[15]。因此,我们应该将0作为值类型的默认值。枚举类型就是一种典型的情况。我们创建的枚举类型决不应该将0视为无效状态。我们知道,所有的枚举类型都继承自System.ValueType。默认的枚举值从0开始,但是我们可以更改这种默认行为。public enum Planet{ // 显式赋值。 // 否则将默认从0开始。 Mercury = 1...

C#多线程和异步(三)——一些异步编程模式【代码】【图】

一、任务并行库  任务并行库(Task Parellel Library)是BCL中的一个类库,极大地简化了并行编程,这里以Parallel.For和Parallel.ForEach为例。在C#中for/foreach循环使用十分普遍,如果迭代不依赖与上次迭代的结果时,把迭代放在 不同的处理器上并行处理 将很大地提高运行效率,Parallel.For和Parallel.ForEach就是为这个目的而设计的。一个栗子: 1staticvoid Main(string[] args)2 {3//Parallel.For 计算0到10的平方 ...

C#之Raw Socket网络封包监视源码

大家可以建立一个Windows Form应用程序,在下面的各个文件中添加对应的源码: //RawSocket.csnamespace ReceiveAll{ using System; using System.Net; using System.Net.Sockets; using System.Runtime.InteropServices; using System.Windows.Forms; [StructLayout(LayoutKind.Explicit)] public struct IPHeader { [FieldOffset(0)] public byte ip_verlen; [FieldOffset(1)] public byte ip_tos; [FieldOffset(2)] ...

在服务端C#如何利用NPOI构建Excel模板【代码】【图】

目前本人接触过两种模板导出的方式:(1)C#利用NPOI接口制作Excel模板,在服务端用数据渲染模板(2)在前端利用前人搭建好的框架,利用office编写xml制作模板,在客户端进行数据的渲染,导出的格式是word。在制作报表时两种方式都可以满足的基本需求,但excel模板更加强大,因为xml模板的布局大体在事先就要确定好,扩展性不高,而excel模板就可以根据数据的特点进行自定义布局,拓展性更强。下面介绍如何在服务端利用NPOI构建exc...

C#中ECS的探索与发现(一)

ECS从本质上来说是一种设计模式.而不是某个语言的特性.该系列文章主要是探索ECS在C#中实现时遇到的各种纠结的问题与方案.同时设计一个unity为前端 .net core做服务器的分布式开发框架.但是水平很菜,难免有错.望批评指正,与君共勉. ECS是什么ECS是Entity Component System的缩写,实例由组件聚合而成.实例本身不包含任何数据,全部的数据都来自它所拥有的组件.也就是说实例有什么数据,取决它有什么组件.系统则是功能的实现.可以理解为...

[Windows问题-5] C#调用CMD命令

问题:有时候有一些DOS命令需要我们在执行程序的时候调用,这需要使用C#提供的相关接口。代码如下,很简单,相信大家都能看懂,我就不赘述了。using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Diagnostics;//这个是进行dos命令调用namespace ExecuteCMD {//实现读取Excel文件的功能class ExecuteCMD{public static void CreateDll(){Process ...

.NET/C#中对自定义对象集合进行自定义排序的方法

一个集合可否排序,要看系统知不知道排序的规则,像内建的系统类型,int ,string,short,decimal这些,系统知道怎么排序,而如果一个集合里面放置的是自定义类型,比如自己定义了一个Car类型,要把它排序,系统是不知道怎么办的。那么,如何告知系统排序的规则呢?有以下几种方法:1:对类实现IComparable接口,示例如下:[csharp] view plain copy print?using System; using System.Collections.Generic; using System.Linq; ...

C# Span 源码解读和应用实践

低代码开发平台,可以自研或者使用市面的IDE工具,完成代码逻辑的服务编排。你可以把基础的业务流程理解为各个分支节点项的基础物料。通过这些物料接口接口的组装、编排和结果输出,来完成代码逻辑的自动化开发和可持续性交付。物料:这里指相对独立的业务领域模型,实现的通用性业务功能。例如:下单核心流程、支付核心流程等。组件:通常说的是技术组件,也包括中间件那部分。这部分是对于业务流程中非业务逻辑的通用性核心逻辑,...

C#小知识点记录【代码】

在CSDN中的定义是:1publicstaticstring CompareExchange( 2refstring location1, 3string value, 4string comparand 5 ) 用locationl与comparand进行比较,如果相等,那么locationl的值就是value的值;如果不等locationl的值就不变。函数等同于一下函数(简单模拟): 1staticstring CompareExchange(refstring location1, string value, string comparand) 2 { 3if(location1==comparand) 4 { 5 ...

C# byte换算【代码】

#region 字节算法[TestMethod]publicvoid BytesTest(){var result = HumanReadableFilesize(232298705);}///<summary>/// 转换方法///</summary>///<param name="size">字节值</param>///<returns></returns>privatestring HumanReadableFilesize(double size){String[] units = new String[] { "B", "KB", "MB", "GB", "TB", "PB" };double mod = 1024.0;int i = 0;while (size >= mod){size /= mod;i++;}return Math.Round(size)...