C#

关于C#反射 你需要知道的

通常,反射用于动态获取对象的类型、属性和方法等信息。今天带你玩转反射,来汇总一下反射的各种常见操作,捡漏看看有没有你不知道的。 获取类型的成员 Type 类的 GetMembers 方法用来获取该类型的所有成员,包括方法和属性,可通过 BindingFlags 标志来筛选这些成员。 using System; using System.Reflection; using System.Linq; ... »

快速了解如何在.NETCORE中使用Generic-Host建立主机

.NETCORE 中的 Generic Host 本文以自己在工作中学习和使用.net core generic-host 作一个总结。 前言 在创建的ASPNETCORE项目中,我们可以在Main()中看见,我们通过IWebHostBuild创建了一个IWebHost,而微软提供了WebHost.CreateDefaultBuilder(args)来帮助我们更轻松得创建WebHost。 常常我们... »

c#中值类型和引用类型的基础教程

前言 值类型和引用类型,是c#比较基础,也必须掌握的知识点,但是也不是那么轻易就能掌握,今天跟着老胡一起来看看吧。  典型类型 首先我们看看这两种不同的类型有哪些比较典型的代表。  典型值类型 int, long, float, double等原始类型中表示数字的类型都是值类型,表示时间的datatime也是值类型,除此之外我们还可以通过关键字struct自定义值类型。&nbs... »

一文看懂C#中List的扩容机制

一文看懂C#中List的扩容机制

一:背景 1. 讲故事 在前一篇大内存排查中,我们看到了Dictionary正在做扩容操作,当时这个字典的count=251w,你把字典玩的66飞起,其实都是底层为你负重前行,比如其中的扩容机制,当你遇到几百万甚至千万的大集合这个扩容机制还真的需要挖一下,免的入戏太深,难以自拔。 二:List扩容机制 1. 如何查看 要想看它的扩容机制,可以用ILSpy去看看List的源码即可,非常简单。 从源码... »

c# BackgroundWorker使用方法

在 WinForms 中,有时要执行耗时的操作,在该操作未完成之前操作用户界面,会导致用户界面停止响应。解决的方法就是新开一个线程,把耗时的操作放到线程中执行,这样就可以在用户界面上进行其它操作。新建线程可以用 Thread 类,可以实现多线程同时操作。简单的方法可以通过 BackgroundWorker 类实现。 BackgroundWorker 可以用来更新UI界面,但是通常用来Progres... »

C# task应用实例详解

Task的应用 ​Task的MSDN的描述如下: 【Task类的表示单个操作不会返回一个值,通常以异步方式执行。 Task对象是一种的中心思想基于任务的异步模式首次引入.NETFramework 4 中。 因为由执行工作Task对象通常以异步方式执行线程池线程上而不是以同步方式在主应用程序线程中,可以使用Status属性,并将IsCanceled, IsCompleted,和IsFau... »

C#实现简单的天气预报示例代码

前言 本来是打算用C#爬取天气网站上的信息,然后用正则表达过滤有用信息的,但是很淦,正则表达式太难了。无意间找到添加web引用的方式来获取天气信息,亲自测试后发现效果尚可,就记录一下。 引用部分 由于本次是控制台应用,就没有页面设计了。在VS中新建控制台程序后,右击“引用”——“添加服务引用”。 在“添加服务引用”左下角选择“高级”。 在“服务引用设置中”选择左下角的“添加web引用”。 在其中输... »

经典实例讲解C#递归算法

一 、递归算法简介 在数学与计算机科学中,递归是指在函数的定义中使用函数自身的方法。   递归算法是一种直接或者间接地调用自身算法的过程。在计算机编写程序中,递归算法对解决一大类问题是十分有效的,它往往使算法的描述简洁而且易于理解。 递归算法解决问题的特点:   (1) 递归就是在过程或函数里调用自身。   (2) 在使用递归策略时,必须有一个明确的递归结束条件,称为递归出口。   (3) 递归算... »

C#添加、获取、删除PDF附件实例代码

概述 附件,指随同文件发出的有关文件或物品。在PDF文档中,我们可以添加同类型的或其他类型的文档作为附件内容,而PDF中附件也可以分为两种存在形式,一种是附件以普通文件形式存在,另一种是以注释的形式存在。在下面的示例中介绍了如何分别添加以上两种形式的PDF附件。此外,根据PDF附件的不同添加方式,我们在获取PDF附件信息或删除PDF附件时,也可以分情况来执行操作。 工具使用 pire.PDF fo... »

C#实现微信公众号会员卡管理的示例代码

     为了更好地理解微信公众号–会员卡管理,作者特意花了不少的时间对其研究,并用c#开发出会员卡demo,主要包含会员卡创建、设置开卡字段、通过创建二维码来投放会员卡、同步会员卡数据/激活会员卡、拉取会员信息、更新会员信息、设置会员卡失效、删除会员卡,从这些可以清晰地看出是围绕会员卡的生命周期来研究的。结合文章中DEMO有助于大家快... »

深入理解c#多态

继承概念   多态:即一个接口,多个功能   同一种操作作用于不同的对象,可以有不同的解释,产生不同的执行结果   多态性可以是静态的或动态的。在静态多态性中,函数的响应是在编译时发生的。在动态多态性中,函数的响应是在运行时发生的  静态多态性   在静态多态性中,函数的响应是在编译时发生的   父类中如果有方法需要子类重写,可以将该方法标记为虚方法   虚方法必须在父类中有实现,空实现... »

Unity实现倒计时组件

前言 倒计时功能在游戏中一直很重要, 不管是活动开放时间,还是技能冷却。 本文实现了一个通用倒计时组件,实现了倒计时的基本功能,支持倒计时结束后的回调。 设计思路 1、倒计时的实现是通过协程,WaitForSeconds(delay)可以很好的每隔一个delay执行一次方法,如果需要很精细的时间, 可以将delay设置成0.1等小于1的值。 2、回调是在倒计时为0时,执行一个Action类型的方法... »

一文搞懂c# await,async执行流

昨天有朋友在公众号发消息说看不懂await,async执行流,其实看不懂太正常了,因为你没经过社会的毒打,没吃过牢饭就不知道自由有多重要,没生过病就不知道健康有多重要,没用过ContinueWith就不知道await,async有多重要,下面我举两个案例佐证一下? 一:案例一 【嵌套下的异步】 写了这么多年的程序,相信大家都知道连接数据库少不了这几个对象,DbConnection,DbComman... »

C#泛型类型知识讲解

概述   泛型类和泛型方法兼具可重用性、类型安全性和效率,这是非泛型类和非泛型方法无法实现的   泛型通常与集合以及作用于集合的方法一起使用   泛型所属命名空间:System.Collections.Generic   可以创建自定义泛型接口、泛型类、泛型方法、泛型事件和泛型委托,以提供自己的通用解决方案,设计类型安全的高效模式   泛型允许编写一个可以与任何数据类型一起工作的类或方法 示例 u... »

Unity实现倒计时功能

本文实例为大家分享了Unity实现倒计时功能的具体代码,供大家参考,具体内容如下 有两种思路可以实现倒计时,一个是Update,另一个是协程。这里只展示核心的算法思路,有收获的还请点个赞哦 Update 首先定义三个变量,访问权限按需求设置: float GameTime; // 游戏总时间,int或者float都可,单位为秒 float TimeLeft; // 游戏剩余时间,单位为秒 floa... »

C#设计模式之Singleton模式

前言 Singleton是二十三个设计模式中比较重要也比较经常使用的模式。但是这个模式虽然简单,实现起来也会有一些小坑,让我们一起来看看吧! 实现思路 首先我们看看这个设计模式的UML类图。 很清晰的可以看到,有三点是需要我们在实现这个模式的时候注意的地方。 私有化的构造器 全局唯一的静态实例 能够返回全局唯一静态实例的静态方法 其中,私有化构造器是防止外部用户创建新的实例而静态方法用于返回全局唯... »

c# 循环语句的使用方法

for循环 格式:   for(表达式1;循环条件;表达式2)   {     循环体;   } 解释:        先执行表达式1,再判断循环条件是否为真,如果为真则执行循环体,执行完成后再执行表达式2再次判断循环条件,由此一直反复循环,直到循环条件为假,退出循环   表达式1只在循环开始的时候执行一次 示例  using Syste... »

C#异步编程几点需要注意的地方

尽量不要编写返回值类型为void的异步方法 在通常情况下,建议大家不要编写那种返回值类型为void的异步方法,因为这样做会破坏该方法的启动者与方法本身之间的约定,这套约定本来可以确保主调方能够捕获到异步方法所发生的异常。 正常的异步方法是通过它返回的Task对象来汇报异常的。如果执行过程中发生了异常,那么Task对象就进入了faulted(故障)状态。主调方在对异步方法所返回的Task对象做awa... »

C# 中 “$” 符号的作用以及用法详解

前言:$是c# 6.0 的语言特性,功能类似string.format(),更方便的地方在于不要像format一样使用索引,可以直接使用变量、表达式或者方法的执行。 一、C#中$的作用 谈及这个$,其实它是C#6.0语法中模板字符串的一种写法,什么是模版字符串?还记得你们用过的格式化字符串吗?string.Format() 这个方法,是最常用的方法之一。 那$又是什么呢?它是为了替代string.... »

关于C#结构体 你需要知道的

结构体概念   在C#中,结构体是值类型,一般适用于表示类似Point、Rectangle、Color的对象   值类型能够降低对堆的管理、使用。降低垃圾回收,表现出更好的性能。可是值类型也有不好的一面。会涉及到装箱拆箱等操作 结构体声明   结构体声明定义了一种新的数据类型,这个数据类型可以为程序包含一个以上的成员变量   要定义一个结构,需要使用struct语句 声明一个学校的结构 struc... »

C# PC版微信消息监听自动回复的实现方法

最近有个微商客户需要搞个 个人微信监听群消息关键字并实现自动回复功能, 因为他有很多群 很多买家咨询的话 一个个回复太麻烦, 客户要求 比如群里有人发 关键字 产品1 则自动回复产品1的相关描述 首先设置关键字,将关键字和回复内容存到一个txt就行 然后就是微信消息监听(windows的消息 句柄不懂的自己 google): /// 消息主要接受程序 /// </summary> //... »

如何用C#验证IP是否为局域网地址

前一阵子有【广州.NET群】的客户问起这个问题,说他们需要验证客户输入的网站是否为局域网。其实局域网的IP并没有确定的定义,只要是局域网中,即可设置为任何一个IP。 但确实存在一个内网保留地址的定义,它会确保公网IPv4的地址不会分配在“内网保留地址”中,该地址定义如下: 10.0.0.0/8,即10.0.0.0-10.255.255.255; 172.16.0.0/12,即172.16.0.0-... »

C#异常处理知识汇总

概念   异常处理是指程序在运行过程中,发生错误会导致程序退出,这种错误,就叫做异常   但并不是所有的错误都是异常   而处理这种错误,称为异常处理   异常处理实际是不断去发掘异常、修改异常,使程序更稳定 异常处理主要表现在四个方面:     程序开发前:尽可能的想到会发生的错误,标注怎么处理应对     程序开发中:尽量暴露程序的问题,解决这些可能的异常     系统发布后:尽可能的解决隐藏... »

详解如何在C#/.NET Core中使用责任链模式

最近我有一个朋友在研究经典的“Gang Of Four”设计模式。他经常来询问我在实际业务应用中使用了哪些设计模式。单例模式、工厂模式、中介者模式 – 都是我之前使用过,甚至写过相关文章的模式。但是有一种模式是我还没有写过文章,即责任链模式。 什么是责任链?# 责任链模式(之前我经常称之为命令链模式)是一种允许以使用分层方式”处理“对象的模式。在维基百科中的经典定义是 在面向对象设计中... »

解答“60k”大佬的19道C#面试题(下)

在上篇中,我解析了前 10 道题目,本篇我将尝试解析后面剩下的所有题目。 姐妹篇:解析“60k”大佬的19道C#面试题(上) 这些题目确实不怎么经常使用,因此在后文中,我会提一组我的私房经典“6k面试题”,供大家轻松一刻。 先略看题目: 11 简述 LINQ 的 lazy computation 机制 12 利用 SelectMany 实现两个数组中元素做笛卡尔集,然后一一相加 13 请... »

Page 1 of 239123»