
c#
文章平均质量分 82
入秋枫叶
大道至简
展开
-
C#的委托Delegate
一、委托基础 1.什么是委托 委托(Delegate)是存有对某个方法的引用的一种引用类型变量,用关键字delegate申明,实现相同返回值和参数的函数的动态调用,提供了对方法的抽象。 委托(Delegate)特别用于实现事件和回调方法。所有的委托(Delegate)都派生自System.Delegate类。 2.声明委托 委托声明后决定了该委托可以引用的...转载 2020-01-10 17:32:51 · 318 阅读 · 0 评论 -
C# 使用递归查询树的所有父节点
背景:公司项目要实现兼容MS SQL、Oracle、PgSQL、DM等多种数据库,由于各种数据库对递归实现方式不尽相同,如果每种数据库都写一种 SQL语句来实现,未免太多,且需求是不定的,哪天又加一种数据库,会很大的增加代码的维护成本。因此为了更好的同时兼容多种数据库,我们可以用代码代替SQL语句来实现递归查询。实现:List<string> parentOrg =...原创 2019-07-04 18:02:47 · 6190 阅读 · 0 评论 -
C# 高级特性之(Attribute)
目录规定特性(Attribute)预定义特性(Attribute)AttributeUsageConditionalObsolete创建自定义特性(Attribute)声明自定义特性构建自定义特性应用自定义特性特性(Attribute)是用于在运行时传递程序中各种元素(比如类、方法、结构、枚举、组件等)的行为信息的声明性标签。您可以通过使用特性向程序添加声明...转载 2019-07-04 11:34:59 · 1000 阅读 · 0 评论 -
C# 接口(Interface)理解
接口定义了所有类继承接口时应遵循的语法合同。接口定义了语法合同"是什么"部分,派生类定义了语法合同"怎么做"部分。接口定义了属性、方法和事件,这些都是接口的成员。接口只包含了成员的声明。成员的定义是派生类的责任。接口提供了派生类应遵循的标准结构。接口使得实现接口的类或结构在形式上保持一致。接口的特点:通过接口可以实现多重继承,C# 接口的成员不能有 public、prot...转载 2019-07-02 14:34:35 · 1822 阅读 · 0 评论 -
C# 面向对象的三大特性
目录一、封装二、继承三、多态C# 面向对象的三大特性分别是封装、继承、多态,下面将帮助您更深一步了解并运用这三大特性。一、封装封装被定义为"把一个或多个项目封闭在一个物理的或者逻辑的包中"。在面向对象程序设计方法论中,封装是为了防止对实现细节的访问。抽象和封装是面向对象程序设计的相关特性。抽象允许相关信息可视化,封装则使开发者实现所需级别的抽象。C# 封装根据...原创 2019-07-01 13:58:11 · 6159 阅读 · 0 评论 -
C#关键字之base与this详解
base、this属于C#的访问关键字。一、base关键字base用于从派生类中访问基类的成员:调用基类上已被其他方法重写的方法。 指定创建派生类实例时应调用的基类构造函数。 基类访问只能在构造函数、实例方法或实例属性访问器中进行。注:从静态方法中使用 base关键字是错误的。另base主要用于面向对象开发的多态。所访问的基类是类声明中指定的基类,如,指定 cl...转载 2019-03-15 18:22:28 · 3635 阅读 · 3 评论 -
Lambda表达式详解
Lambda简化了匿名委托的使用,让你让代码更加简洁,优雅。据说它是微软自c#1.0后新增的最重要的功能之一。lambda简介 lambda运算符:所有的lambda表达式都是用新的lambda运算符 " => ",可以叫他,“转到”或者 “成为”。运算符将表达式分为两部分,左边指定输入参数,右边是lambda的主体。 lambda表达式: ...转载 2019-01-09 18:05:13 · 274 阅读 · 0 评论 -
设置字符变量为空的几种方法
设置字符为空不能直接使用 char m = '',可以使用下面几种方法进行初始化:char m1 = '\0';char m2 = char.MinValue;char m3 = (char)0;char m4 = Convert.ToChar(0);char m5 = ((char?)null).GetValueOrDefault(); ...原创 2018-10-08 16:29:57 · 7880 阅读 · 0 评论 -
C#操作Word的方法总结
本文中用C#来操作Word,包括:创建Word;插入文字,选择文字,编辑文字的字号、粗细、颜色、下划线等;设置段落的首行缩进、行距;设置页面页边距和纸张大小;设置页眉、页码;插入图片,设置图片宽高以及给图片添加标题;插入表格,格式化表格,往表格中插入数据;保存Word,打印Word;重新打开Word等。Visual studio版本:Visual Studi...转载 2018-09-14 14:17:08 · 1753 阅读 · 1 评论 -
C#字符串与byte[]相互转换
string类型转成byte[]:byte[] byteArray = System.Text.Encoding.Default.GetBytes ( str );byte[]转成string:string str = System.Text.Encoding.Default.GetString ( byteArray );string类型转成ASCII byte[]:/...转载 2018-09-14 14:03:36 · 23636 阅读 · 0 评论 -
C#使用流处理写入WORD文件出现乱码
要实现从数据库中读取数据并将数据拼接成字符串,从而写入流,但生成的word中却是乱码。代码如下:string upLoadPath = GetUpLoadPath(); //上传目录相对路径string CNumber = "LBSC" + DateTime.Now.ToString("yyyyMMddHHmmssfff");string newFileName = CNumber ...原创 2018-09-14 13:18:15 · 2181 阅读 · 1 评论 -
C#中DataTable中的Compute方法使用收集
C#中DataTable中的Compute方法使用收集 Compute函数的参数就两个:Expression,和Filter。Expresstion是计算表达式,关于Expression的详细内容请看这里“http://msdn2.microsoft.com/zh-cn/library/system.data.datacolumn.expression(VS.80).aspx”。而Filter则是...转载 2018-07-16 14:28:09 · 391 阅读 · 0 评论 -
面向对象三大特性及其他相关概念
面向对象是一种对现实世界理解与抽象的方法。三大特性:封装、继承、多态。封装,也就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。 封装是面向对象的特征之一,是对象和类概念的主要特性。 简单的说,一个类就是一个封装了数据以及操作这些数据的代码的逻辑实体。在一个对象内部,某些代码或某些数据可以是私有的,不能被外界访问。通过这种方式,对象对...原创 2018-05-26 13:43:17 · 480 阅读 · 0 评论 -
重写与重载的区别
重载(Overloading)方法重载是让类以统一的方式处理不同类型数据的一种手段。多个同名函数同时存在,具有不同的参数个数/类型。重载Overloading是一个类中多态性的一种表现。方法重载,就是在类中可以创建多个方法,它们具有相同的名字,但具有不同的参数和不同的定义。调用方法时通过传递给它们的不同参数个数和参数类型来决定具体使用哪个方法, 这就是多态性。重载的时候,方法名...转载 2018-05-12 11:13:21 · 264 阅读 · 0 评论 -
C#对List<T>取交集、差集及并集
1. 交集(1)取交集 (A和B都有) List A : { 1 , 2 , 3 , 5 , 9 } List B : { 4 , 3 , 9 }var intersectedList = list1.Intersect(list2);结果 : { 3 , 9 }(2)判斷A和B是否有交集bool isIntersected = list1.Intersect(l...转载 2018-03-28 12:43:16 · 11441 阅读 · 0 评论 -
C#方法名前的方括号——方法标签
1、序列化: [Serializable] public void 方法名(){…}2、WebServices方法: [WebMethod] public void 方法名(){…} 表示此方法是一个Web服务方法,客户端可以通过Web服务方式调用此方法。3、Ajax(AjaxPro)方法: [AjaxPro.AjaxMethod] public void 方法名(){…}...转载 2018-01-17 17:30:43 · 1078 阅读 · 0 评论 -
导出word如何默认打开为页面视图
最近在做一个商务导出发货单功能,商务要求导出word版,实现之后又反馈说导出的word默认打开是web版式,而不是常用的页面视图,在网上找了很久,最终找到解决方案。原创 2017-11-07 13:07:26 · 10591 阅读 · 2 评论 -
参数定义方式--可选参数,命名参数,params,ref,out
C#方法参数:可选参数,命名参数,params,ref,out 1.可选参数 .net4中新增加的功能,应用可选参数的方法在调用的时候可以选择性的添加需要的参数,而不需要的参数由参数默认值取代。使用这种功能可以减少代码中的方法重载。原创 2017-11-07 11:53:25 · 1912 阅读 · 0 评论 -
自己写网页爬虫——网页分类抓取/采集并导入数据库
一直想着整理出网页抓取的具体实现功能代码,方便大家指正,也方便自己学习修正。当然这个并不是针对所有网页,自己写的功能有限,只能针对某一特定结构的网页进行数据采集,如果有更好的方法,请大家不吝指教,在此谢过!原创 2017-08-14 16:18:41 · 5165 阅读 · 2 评论 -
C#利用反射为属性赋值
作为一个普通程序员,相信每个人都曾经给某个model编写插入、修改方法时因为这个model的属性太多而吐槽过,当然聪明的使用例如动软代码生成器这样软件的你除外。这个时候我们一般是吐槽归吐槽,报怨归报怨,之后还不是得老老实实地一个属性一个属性的赋值。。 而一个偶然的机会看到dtcms5.0发布,无意间看到它竟然首先(当然是仅在我自己的认知中,这一发现让我对程序世界的博大精深充满了期待与敬畏)使用了原创 2017-08-03 10:20:11 · 19609 阅读 · 0 评论 -
Web Reference和Service Reference的区别
今天因为项目需要使用服务引用,就按之前的经验添加上了,步骤如下: 项目根目录——引用——右键——添加服务引用——高级——添加Web引用——输入接口的URL地址——回车(下方出现的就是接口的定义的方法)——修改Web引用名——添加引用。按照上面的步骤就可以将引用添加到Web References文件夹下,这也是以往经验,但是具体使用时发现添加的是Web Reference并不能满足项目的需要,这里需原创 2017-07-26 10:09:02 · 11862 阅读 · 0 评论 -
数据采集与网站统计实现全过程
做网站统计首先要有数据,数据从何而来?这需要网站要记录客户所访问的轨迹,记录用户访问每个页面的流向,给网站加过百度统计与cnzz的站长们估计都清楚,要想对某个页面进行统计,就要在该页面上加上统计代码,将用户的访问数据记录下来,进而生成统计数据。现在就来自己实现一个这样的数据采集与统计功能,具体步骤与相关代码如下:一、设计表结构 先考虑数据的记录方式与保存位置,由于后期要用户这些数据,因此考虑将数原创 2017-07-24 10:55:59 · 4921 阅读 · 0 评论 -
C#关键字之abstract详解
abstract 修饰符指示所修饰的内容缺少实现或未完全实现,可用于类、方法、属性、索引器和事件。一般没有加abstract修饰的即默认为virtual。 一、abstract修饰的类叫抽象类。抽象类中的内容因缺少实现或未完全实现,因此不能生成对象实例,只能用于其他类的基类或做为对象变量声明的类型,且抽象类中的成员则必须通过由该抽象类派生的类来实现,即通过子类继承并覆盖抽象类中的抽象方法。 如原创 2017-06-29 10:18:41 · 2381 阅读 · 0 评论 -
C#实现EXCEL数据的导入导出
用户经常会有这种需求,可以将excel中的数据自动导入到数据库,而不用费时费力地手动添加。 实现思路:先将excel文件上传到服务器(文件上传请移步前一篇文章插件webuploader实现文件上传),然后读取表格中的内容,将内容添加到相应数据表中,最后再将上传的excel文件删除。前台代码:<div class="div-content"> <div class="list">原创 2017-06-09 09:50:01 · 5837 阅读 · 0 评论 -
插件webuploader实现文件上传
使用插件webuploader来实现文件的上传功能,文件下载地址: http://download.youkuaiyun.com/detail/yiyelanxin/9864302webuploader上传插件 引用:<script type="text/javascript" src="../script/webuploader/webuploader.min.js"></script><script原创 2017-06-08 10:15:30 · 3601 阅读 · 0 评论 -
C#错误异常日志记录到文件
当我们将网站布署到线上之后,为了实时了解网站的运行情况,如是否有错误页面、网站运行速度、是否有攻击等。那么我们就很有必要为网站加上错误与异常记录到日志文件,这样就可以随时查看网站的线上运行情况,另有一个好处是当网站有运行错误页面时,根据错误日志我们可以快速到定位到错误行进行排查原因、解决问题,这个是对于运行在线上而不能调试的网站的一个非常有必要的功能。 具体实现方法:在全局文件Global.asa原创 2017-05-27 10:14:36 · 5594 阅读 · 0 评论 -
C#关键字之const详解
一、const关键字限定一个变量不允许被改变。使用const在一定程度上可以提高程序的安全性和可靠性。 1.用于修改字段或局部变量的声明,表示指定的字段或局部变量的值是常数,不能被修改。 2.常数声明的类型指定声明引入的成员类型。常数表达式必须产生具有目标类型或可隐式转换为目标类型的值。 3.常数表达式是在编译时可被完全计算的表达式。因此不能从一个变量中提取值来初始化常量。 (如果const原创 2017-05-18 11:28:51 · 24672 阅读 · 2 评论 -
C#关键字之sealed详解
sealed作为形容词是封闭的,未知的。sealed修饰类时说明该类将不能被继承或重写,修饰方法(函数或属性)时可防止扩充类重写此方法(函数或属性)。通常用于实现第三方类库时不想被客户端继承,或用于没有必要再继承的类以防止滥用继承造成层次结构体系混乱。恰当的使用sealed修饰符也可以在一定程度上提高运行效率,因为不用考虑继承类会重写该成员。一、密封类 1.结构是隐匿密封的,因此不能继承,不能和a原创 2017-05-16 11:00:17 · 3081 阅读 · 0 评论 -
C#关键字之static详解
static静态的,不变的,在某个类中只有一个,不会因实例化对象的不同而不同。static可以修饰类、字段、属性、方法等。如一个方法前加上static修饰后要对其进行调用可以直接通过类名点出来,不用再对类进行实例化。一、静态类 1.只能包含静态成员(静态方法或静态变量),非静态成员是不能使用的,而非静态类可以包含静态的方法、字段、属性或事件,且无论对这个非静态类创建多少个实例,它的静态成员都只有一原创 2017-05-15 11:38:21 · 2572 阅读 · 0 评论 -
C#关键字之override详解
重载、重写、覆写,分别指的是overload、override、new。 一、override重写,是在子类中重写父类中的方法,两个函数的函数特征(函数名、参数类型与个数)相同。用于扩展或修改继承的方法、属性、索引器或事件的抽象或虚拟实现。提供从基类继承的成员的新实现,而通过override声明重写的方法称为基方法。 注意事项: 1.重写基方法必须具有与override方法相同的签名。 2.原创 2017-05-12 10:47:34 · 63236 阅读 · 9 评论 -
C#关键字之internal详解
一、internal 我们都知道的三种类型/成员修饰符public、protected、private,也明白它们所表示的含义,internal也是一各类型/成员修饰符(被修饰的类型或者成员称为内部类型或成员),只是它所修饰的类只能在同一个程序集中被访问,而同一个程序集表示同一个dll程序集或同一个exe程序集。在vs中一个项目会生成一个dll文件,因此这个dll或这个项目也就是一个程序集。 比原创 2017-04-28 10:21:12 · 50044 阅读 · 2 评论 -
C#关键字之Partial详解
Partial是局部类型的标志。局部类型可以实现将一个类、结构或接口分成几个部分,分别放在在几个不同的.cs文件中(当然也可以放在同一个.cs文件中)。在程序进行编译之后,将会合并成一个完整的类。因此局部类型并没有看起来那么难以理解,使用partial只是让类变得更容易管理,实际使用时和普通的类一样使用。适用范围: (1).类型特别大,不宜放在一个文件中实现。 (2) 一个类型中的一部分代码为原创 2017-04-25 08:52:57 · 38552 阅读 · 2 评论