C# - 技术教程文章

c#通过反射移除所有事件

移除全部事件委托C# code ?12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 public class Test { public event EventHandler AA; public void Foo() { if (AA != null) AA(this, new EventArgs()); } } static void Main(string[] args) { Test obj = new Test(); obj.AA += delegate { Console.WriteL...

C#并行编程-Parallel【代码】【图】

原文:C#并行编程-Parallel菜鸟学习并行编程,参考《C#并行编程高级教程.PDF》,如有错误,欢迎指正。 TPL中引入了一个新命名空间System.Threading.Tasks,在该命名空间下Task是主类,表示一个类的异步的并发的操作,创建并行代码的时候不一定要直接使用Task类,在某些情况下可以直接使用Parallel静态类(System.Threading.Tasks.Parallel)下所提供的方法,而不用底层的Task实例。Parallel.Invoke 试图将很多方法并行运行,如果传入的...

C# DateTime【代码】

1 获得当前系统时间: DateTime dt = DateTime.Now;2 3Environment.TickCount可以得到“系统启动到现在”的毫秒值4 5 DateTime now = DateTime.Now;6 Console.WriteLine(now.ToString("yyyy-MM-dd")); //按yyyy-MM-dd格式输出s 7 8 Console.WriteLine(dt.ToString()); // 26/11/2009 AM 11:21:30 9 10 Console.WriteLine(dt.ToFileTime().ToString()); // 12903679290801402411 12// Converts the value of the curr...

C#中无法找到microsoft.web文件

1、原因:上午更新了vs2015后,找不到该文件。2、解决方法:1、工具->Nuget包管理器->程序包管理器控制台-> 输入 Install-Package Microsoft.Web.Infrastructure2、等待片刻,安装完成即可。原文:https://www.cnblogs.com/masonblog/p/12740789.html

从今天开始正事学习C#和.Net了

从今天开始正事开始学习C#语言了,本来我是不会学习C#的但现在.Net主流还是用C#进行开发,而且我以后有点想Unity3D发展Unity3D也支持C#。而且现在我的课正好也有C#和.Net正好好好学习一下这个,将来多一项技能总是不错的。  从今天开发每天一课学习C#和.Net就用传智播客的视频教程,现在看了一课讲的还很不错知道了不少的东西。那上面都划好了每天多少的内容了,我正好照着上面好好学习天天向上。今天11月份就要毕业了我的时间也...

C# 正则验证日期时间【代码】

public static bool IsDateTime(string StrSource) { return Regex.IsMatch(StrSource, @"^(((((1[6-9]|[2-9]\d)\d{2})-(0?[13578]|1[02])-(0?[1-9]|[12]\d|3[01]))|(((1[6-9]|[2-9]\d)\d{2})-(0?[13456789]|1[012])-(0?[1-9]|[12]\d|30))|(((1[6-9]|[2-9]\d)\d{2})-0?2-(0?[1-9]|1\d|2[0-8]))|(((1[6-9]|[2-9]\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))-0?2-29-)) (20|21|22|23|[...

C#值类型装箱后能改变其值吗【代码】【图】

当把一个值类型赋值给引用类型,这个过程可以看作是"装箱"。object a = 10;以上,堆栈上的过程大致是:1、在栈上开辟空间给变量a2、在堆上开辟空间,习惯上把该空间看作是"箱子"3、把10"装箱" 变量a指向堆上值为10的对象,换句话说,变量a的值是堆上对象的地址。 现在,如果我们想让a=11,可能首先想到的是:让"箱子"内的10自增1,变成11。 尝试这样做:oject a = 10; a++;结果报错:++无法运用于object类型。也就是说,++无法应用...

C#Socket服务器与客户端的开发(3)【代码】【图】

之前我们借助一个SuperSocket实现了一个简易版的服务器, 但是不管是Server还是Session都是使用框架的,本篇博客我们要实现自己的Server和Session,来重写框架原生的Server或Session的方法,或添加自己所需的属性,来实现自己的业务逻辑,并且也不在使用事件来绑定接收,连接,或关闭事件,全部交给Bootstrap来执行,(这个Bootstrap并不是指前端框架的Bootstrap ,而是指的SuperSocket框架的一个引导程序或说是辅助程序),就是这里我们会使用Bo...

Modbus CRC 16 (C#)【代码】

算法1.预置一个值为 0xFFFF 的 16 位寄存器,此寄存器为 CRC 寄存器。 2.把第 1 个 8 位二进制数据(即通信消息帧的第 1 个字节)与 16 位的 CRC 寄存器相异或,异或的结果仍存放在该 CRC 寄存器中。 3.把 CRC 寄存器的内容右移一位,用 0 填补最高位,并检测移出位是 0 还是 1. 4.如果移出位为0 ,则重复步骤(3)(再次右移一位);如果移出位为 1,则 CRC 寄存器与 0xA001 (多项式码)进行异或。 5.重复步骤(3)和(4),...

从C#到Object C,循序渐进学习苹果开发(2)--Object C和C#的差异【代码】【图】

本随笔系列主要介绍从一个Windows平台从事C#开发到Mac平台开发苹果开发的一系列感想和体验历程,本系列文章是在起步阶段逐步积累的,希望带给大家更好,更真实的转换历程体验。在上篇《从C#到Object C,循序渐进学习苹果开发(1)--准备开发账号和开发环境》介绍了一些基本的转换感悟和一些基础的准备工作,还没有正式真实的介绍Object C和C#的之前差异,我们知道,从一种环境或者一种语言转换过去另外一种,我们都会做一些对比和理...

C#毫秒转时分秒格式【代码】

privatestringRevertToTime(int l)//转换为时分秒格式{string str ="";int hour =0;int minute =0;int second =0; second = l /1000;if(second >60){ minute = second /60; second = second %60;}if(minute >60){ hour = minute /60; minute = minute %60;}return(hour.ToString()+":"+ minute.ToString()+":"+ second.ToString());}来自为知笔记(Wiz)原文:http://www.cnblog...

c#操作Excel图表----备份用

public class ExcelHelper { [DllImport("User32.dll", CharSet = CharSet.Auto)] public static extern int GetWindowThreadProcessId(IntPtr hwnd, out int ID); protected void Button1_Click(object sender, EventArgs e) { var excel = new Microsoft.Office.Interop.Excel.ApplicationClass(); excel.Workbooks.Open("d:\aaa.xls", Type.Missing, Type.Missing...

C# WinForm开发系列 - RDLC

http://www.cnblogs.com/peterzb/archive/2009/07/08/1519489.htmlhttp://jingyan.baidu.com/article/ab69b270ff9c6e2ca7189f0e.html在MVC项目中使用RDLC报表http://www.cnblogs.com/sunjie9606/p/4260063.html原文:http://www.cnblogs.com/chengjun/p/5466536.html

[转] C#实现在Sql Server中存储和读取Word文件【代码】

出处 C#实现在Sql Server中存储和读取Word文件 要实现在Sql Server中实现将文件读写Word文件,需要在要存取的表中添加Image类型的列,示例表结构为: CREATE TABLE CONTRACTS ( ID VARCHAR (50), CONTRACT_FILE IMAGE ); 要将Word文件存储到数据库的CONTRACT_FILE字段中,需要将文件转换为byte数组,具体代码如下: /// 将文件转换为byte数组 ///<summary>/// 将文件转换为Bytes ///</summary>///<param name="file...

16.C#--whil的使用

static void Main(string[] args){//要求用户输入用户名和密码,只要不是admin、888888就一直提示用户名或密码错误,请重新输入//定义name和pwd二个变量进行存储用户名和密码string name = "";string pwd = "";while(name!="admin" && pwd != "888888"){Console.WriteLine("请输入用户名");name = Console.ReadLine();Console.WriteLine("请输入用户密码");pwd = Console.ReadLine();}Console.WriteLine("输入正确,程序退出");Cons...

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)...