C#
文章平均质量分 85
kone666
这个作者很懒,什么都没留下…
展开
-
.NET平台下,使用字母进行中文模糊查询
Microsoft Visual Studio International Feature Pack 2.0自述文件这篇文档提供了Visual Studio International Feature Pack 2.0版本的信息。这里提供的信息包括基本功能的简单介绍以及系统需求,安装,下载和支持信息。其1.0版发布时的名字是Microsoft Visual Studio Internati...原创 2019-03-29 13:44:08 · 533 阅读 · 0 评论 -
C#图片处理示例(裁剪,缩放,清晰度,水印)
前言需求源自项目中的一些应用,比如相册功能,通常用户上传相片后我们都会针对该相片再生成一张缩略图,用于其它页面上的列表显示。随便看一下,大部分网站基本都是将原图等比缩放来生成缩略图。但完美主义者会发现一些问题,比如显示排版时想让相片缩略图列表非常统一、整齐、和美观,比如要求每张缩略图大小固定为120 x 90且不拉伸变形怎么办?再比如用户头像如何让缩略图比原图更清晰?或是如何在上传的图片下转载 2017-11-14 15:25:40 · 407 阅读 · 0 评论 -
C#图片按比例缩放
// 按比例缩放图片 public Image ZoomPicture(Image SourceImage, int TargetWidth, int TargetHeight) { //新的图片宽 int IntWidth; //新的图片高转载 2017-11-14 15:28:47 · 1976 阅读 · 0 评论 -
多线程、方便扩展的Windows服务程序
前言在项目应用中经常会碰到定时调度的工作,比如我曾经开发一个日访问量超过1000W的网站,如果这1000W访问都从数据库读取数据显示给用户,我的服务器肯定承受不了,于是我需要每10分钟把首页生成一次.html的静态文件;我的数据库里还有一张表,用来收集系统的各种异常、出错和危险信息,我需要把这张表里的记录每半个小时向运维人员发送一封邮件,这样他们就可以及时了解到系统运行情况;我需要每天凌晨转载 2017-11-14 16:04:23 · 547 阅读 · 0 评论 -
图片保存到数据库的小程序
using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Text;using System.Windows.Forms;using System.Data.Sql;using System转载 2017-11-28 20:18:10 · 1419 阅读 · 0 评论 -
C#:ListView控件如何实现点击列表头进行排序
using System;using System.Collections;using System.Windows.Forms;namespace Common{ /// /// 对ListView点击列标题自动排序功能 /// public class ListViewHelper { /// /// 构造函转载 2017-11-14 19:14:44 · 977 阅读 · 0 评论 -
List转DataTable
//传入list集合,返回DataTable public void LoadToJMDS_Partstr(List List, ref DataTable dt_ora) { #region 具体方法部分 //将List集合类转换成DataTable if (List.Count > 0原创 2017-12-11 20:38:17 · 383 阅读 · 0 评论 -
C#特性和反射
.NET编译器的任务之一就是为所有定义和引用的类型生成元数据描述。除了程序集中标准的元数据外,.NET平台还支持特定(attribute)把更多的元数据嵌入到程序集中。.NET特性扩展了抽象的System.Attribute基类,.NET中有很多预定义的特性,例如:[DllImport]、[Obsolete]和[Serializable]等等。看一个Obsolete使用的例子,Ob转载 2017-10-11 13:39:35 · 500 阅读 · 0 评论 -
C#往excel中插入特殊符号——HSSFRichTextString
最近在做.net导出excel文档,客户需要将带方框的和方框带勾的符号也打印出来,网上查阅无数,无果。后来借助HSSFRichTextString解决问题。using NPOI.HSSF.UserModel;using NPOI.SS.UserModel;这个是导出excel文档所需要的引用。下述关键部分。首先情况如下:就是要导出上面转载 2017-10-10 10:21:30 · 2106 阅读 · 1 评论 -
C# 调用外部程序Process类
在程序开发中,一个程序经常需要去调用其他的程序,C#中Process类正好提供了这样的功能。它提供对本地和远程进程的访问并使您能够启动和停止本地系统进程。一、启动进程实例 Process myProcess = new Process(); try { myProcess.原创 2017-08-16 14:27:14 · 2204 阅读 · 0 评论 -
Lambda表达式与表达式树
引言: 对于刚刚接触Lambda表达式的朋友们,可能会对Lambda表达式感到非常疑惑,它到底是个什么什么样的技术呢?以及它有什么好处和先进的地方呢?下面的介绍将会解除你这些疑惑。 一、Lambda表达式的演变过程Lambda表达式其实大家可以理解为它是一个匿名函数(对于匿名函数的介绍大家可以参考我这篇文章), Lambda表达式可以包含表达式和语句,并且可转载 2017-07-24 14:02:25 · 526 阅读 · 0 评论 -
深入理解扩展方法
在 Java 中没有这样的东西,一个类一旦是 final 的 ,这个类就不能再被添加方法, 但是 C# 能够做到,可以给 sealed 类添加新的方法,这点我还是比较喜欢 c# 的。这就是 C# 中的扩展方法。那么什么情况下我们才需要去给一个类写扩展方法呢?系统自带的类型,我们无法去修改;修改源代码需要较大的精力,而且可能会带来错误;我们只是需要一个或者较少的几个方法,修改源代原创 2017-07-25 11:27:09 · 293 阅读 · 0 评论 -
C#中的深浅拷贝
也许会有人这样解释C# 中浅拷贝与深拷贝区别: 浅拷贝是对引用类型拷贝地址,对值类型直接进行拷贝。不能说它完全错误,但至少还不够严谨。比如:string 类型咋说? 其实,我们可以通过实践来寻找答案。首先,定义以下类型:int 、string 、enum 、struct 、class 、int[ ] 、string[ ]代码如下原创 2017-07-26 08:46:38 · 348 阅读 · 0 评论 -
深入理解泛型(二) 协变性和逆变性
引言: 在C# 2.0中泛型并不支持可变性的(可变性指的就是协变性和逆变性),我们知道在面向对象的继承中就具有可变性,当方法声明返回类型为Stream,我们可以在实现中返回一个FileStream的类型,此时就存在一个隐式的转化——从FileStream类型(子类引用)——>Stream类型(父类引用),并且引用类型的数组也存在这种从子类引用——>父类引用的转化,例如string[]转载 2017-07-20 11:15:14 · 1252 阅读 · 0 评论 -
C# 语法糖整理
首先需要声明的是“语法糖”这个词绝非贬义词,它可以给我带来方便,是一种便捷的写法,编译器会帮我们做转换;而且可以提高开发编码的效率,在性能上也不会带来损失。这让java开发人员羡慕不已,呵呵。 1. 经过简化的Property早些时候我们这样声明Property12345678原创 2017-07-25 10:42:30 · 1348 阅读 · 0 评论 -
深入理解事件
引言:前面几个专题对委托进行了详细的介绍的,然后我们在编写代码过程中经常会听到“事件”这个概念的,尤其是写UI的时候,当我们点击一个按钮后VS就会自动帮我们生成一些后台的代码,然后我们就只需要在Click方法里面写代码就可以,所以可能有些刚接触C#的朋友就觉得这样很理所当然的,也没有去思考这是为什么的,为什么点击下事件就会触发我们在Click方法里面写的代码呢?事件到底扮演个什么样的角色呢转载 2017-07-27 14:16:14 · 234 阅读 · 0 评论 -
C#生成缩略图
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Drawing;using System.Drawing.Imaging;namespace 生成缩略图{ class ImageClass { public b原创 2017-10-10 09:00:54 · 340 阅读 · 0 评论 -
Windows Service服务 附加到进程调试
∗Windows Service服务的调试∗• 写日志调试要在可能出现错误的地方都要做写入日志处理,并且多用Try…Catch来捕获错误。• 附加到进程这种调试方式可以直接进入断点,比较直观,只需要操作2~3步就可以,但是要求服务必须能成功开启才能附加到进程调试。 步骤如下: 1.首先编译好服务,在合适的地方加上断点 2.启动(或者重启)服务,用ba原创 2017-12-11 20:41:46 · 4886 阅读 · 1 评论 -
BackgroundWorker控件,解决耗时操作与UI的分离
在 WinForms 或WPF中,有时要执行耗时的操作,在该操作未完成之前操作用户界面,会导致用户界面停止响应。解决的方法就是新开一个线程,把耗时的操作放到线程中执行,这样就可以在用户界面上进行其它操作。新建线程可以用 Thread 类,可以实现多线程同时操作,简单的可以通过 BackgroundWorker 类实现。用 BackgroundWorker 类执行耗时的操作Backgrou...原创 2018-10-16 16:44:50 · 1582 阅读 · 0 评论 -
C# 序列化(Serialize)与反序列化(Deserialize)
序列化是把一个内存中的对象的信息转化成一个可以持久化保存的形式,以便于保存或传输,序列化的主要作用是不同平台之间进行通信,常用的有序列化有json、xml、文件等,下面就逐个讲下这三种序列化的方法。一、序列化为jsonC#中用于对象和json相互转换的原生类有两个:DataContractJsonSerializer和JavaScriptSerializer,其中JavaScriptSer...原创 2018-12-03 16:47:32 · 5189 阅读 · 0 评论 -
C# 内存流(MemoryStream)的对象序列化
直接上代码:命名空间:using System.IO;using System.Runtime.Serialization.Formatters.Binary;实现函数: public static byte[] SerializeObject(object obj) { if (obj == null) return null; //内存实例 Memor...原创 2018-12-03 16:59:05 · 3822 阅读 · 0 评论 -
使用SharpZipLib对二进制流(MemoryStream)进行压缩和解压,效率对比
首先需要下载SharpZipLib,下载地址:http://icsharpcode.github.io/SharpZipLib/需要引入命名空间:using ICSharpCode.SharpZipLib.GZip;using System.IO;压缩、解压缩 public static byte[] CompressGZip(byte[] rawData) ...原创 2018-12-03 17:19:49 · 2885 阅读 · 0 评论 -
C# 基元类型(primitive)
C#编程中,初始化一个整数有两种方式:(1)、较繁琐的方法,代码如下:Int32 a = new Int32();(2)、极简的方法,代码如下:int a = 0;对比两种方法,分析如下:第一种:过于繁琐,但是是标准的初始化一个整数的方式第二种:增强代码可读性,且生成的IL代码与使用第一种方式的一样.支持这种方式声明的数据类型统称为"基元类型"。"基元类型"直接...原创 2018-12-06 15:35:14 · 1422 阅读 · 0 评论 -
大数据量的数据分页1-视图
碰到需要分页的工作了,不让往Sql服务器上写存储过程,而且数据库字段也没有连续好用的列,那么问题来了,怎样才能舒坦的分页呢?主要用到ROW_NUMBER() over (order by AgentID desc) rows1思路如下:1.把数据全部缓存到本地,然后在本地实现分页----不到两秒 Pass~2.在服务器上写存储过程,-----Pass3.直接用 betw...转载 2019-03-30 00:42:31 · 278 阅读 · 0 评论 -
Winform 避免重复打开已存在的窗体
通过按钮事件定义了一个开窗口的操作,每次点击按钮就会弹出新窗口,但是多次点击会出现多个相同的窗口,这样的对于之后的处理不方便,也不利于用户的使用体验,所以就需要在点击按钮时判断窗体是否已经存在,存在则激活,不存在则新建;在按钮点击事件中定义如下: Boolean flag = false;//判断标志 FormCollection formCollection = Applicatio...转载 2019-03-28 14:49:07 · 2495 阅读 · 0 评论 -
FileStream大文件复制
FileStream缓冲读取和写入可以提高性能。FileStream读取文件的时候,是先将流放入内存,经Flush()方法后将内存中(缓冲中)的数据写入文件。如果文件非常大,势必消耗性能。特封装在FileHelper中以备不时之需。参考文章:http://www.cnblogs.com/yangxiaohu1/archive/2008/06/20/1226949.html。将该文章中提供的代码稍作...转载 2018-07-11 13:53:47 · 1591 阅读 · 0 评论 -
async & await (2)
转载自:http://www.cnblogs.com/jesse2013/p/Asynchronous-Programming-In-DotNet.html#Asyncandawait-In-WinForm转载 2018-07-11 12:50:28 · 130 阅读 · 0 评论 -
匿名类型、扩展方法
1.匿名类型顾名思义 匿名类型就是没有名字的类型。在C#3.0中允许我们在程序中声明一个临时的类型来存储数据,例如:1 class Program2 {3 static void Main(string[] args)4 {5 //声明一个匿名对象,拥有 Name和Age 属性6转载 2017-11-24 16:12:00 · 278 阅读 · 0 评论 -
string.IsNullOrEmpty与string.IsNullOrWhiteSpace
一、string.IsNullOrEmpty 这个是判断是否为空null或者string.Empty,如果是" "这样的字符就返回false,为了达到判断过滤这些功能,就需要使用Trim()和Length属性的帮助,判断长度是否为零。 即:string.IsNullOrEmpty(str) || str.Trim().Length == 0 二、string转载 2017-11-24 16:29:13 · 1172 阅读 · 0 评论 -
获取枚举及属性的DescriptionAttribute值
1.枚举 System.Array values = Enum.GetValues(typeof(EnumType)); foreach (EnumType type in values) { this.cmbType.Properties.Items.Add(GetEnumDescription原创 2017-11-24 17:07:04 · 1875 阅读 · 0 评论 -
反射操作工具类
using System;using System.Collections.Generic;using System.Data;using System.Reflection;namespace Framework.Utility{ /// /// 反射操作工具类 /// public class ReflectionUtil {转载 2017-11-24 17:49:21 · 313 阅读 · 0 评论 -
C#数据压缩
在进行文件存储或者数据传输时,为了节省空间流量,需要对数据或文件进行压缩。在这里我们讲述通过C#实现数据压缩。一、GZipStream压缩微软提供用于压缩和解压缩流的方法。此类表示 GZip 数据格式,它使用无损压缩和解压缩文件的行业标准算法。 这种格式包括一个检测数据损坏的循环冗余校验值。 GZip 数据格式使用的算法与 DeflateStream 类的算法相同,但它可以原创 2021-07-26 11:22:43 · 3661 阅读 · 1 评论 -
IEnumerable 与 IEnumerator 的区别
一、 IEnumerator 解释:它是一个的集合访问器,使用foreach语句遍历集合或数组时,就是调用 Current、MoveNext()的结果。public interface IEnumerator { // 返回结果: 集合中的当前元素。 object Current { get; }原创 2018-05-03 16:55:43 · 307 阅读 · 0 评论 -
基于.NET平台常用的框架整理
自从学习.NET以来,优雅的编程风格,极度简单的可扩展性,足够强大开发工具,极小的学习曲线,让我对这个平台产生了浓厚的兴趣,在工作和学习中也积累了一些开源的组件,就目前想到的先整理于此,如果再想到,就继续补充这篇日志,日积月累,就能形成一个自己的组件经验库。分布式缓存框架:Microsoft Velocity:微软自家分布式缓存服务框架。Memcahed:一套分布式的高速缓存系统,目前被许多网站使...转载 2018-06-29 09:49:14 · 541 阅读 · 1 评论 -
async & await (1)
转载自:http://www.cnblogs.com/jesse2013/p/async-and-await.html转载 2018-07-11 12:48:23 · 135 阅读 · 0 评论 -
迭代器与yield return
引言: 在C# 1.0中我们经常使用foreach来遍历一个集合中的元素,然而一个类型要能够使用foreach关键字来对其进行遍历必须实现IEnumerable或IEnumerable接口,(之所以来必须要实现IEnumerable这个接口,是因为foreach是迭代语句,要使用foreach必须要有一个迭代器才行的,然而IEnumerable接口中就有IEnumerator Ge转载 2017-07-24 17:42:38 · 666 阅读 · 0 评论 -
深入理解泛型(一)
一、类型推断 在我们写泛型代码的时候经常有大量的""符号,这样有时候代码一多,也难免会让开发者在阅读代码过程中会觉得有点晕的,此时我们觉得晕的时候肯定就会这样想:是不是能够省掉一些""符号的呢?你有这种需求了, 当然微软这位好人肯定也会帮你解决问题的,这样就有了我们这部分的内容——类型推断,意味着编译器会在调用一个泛型方法时自动判断要使用的类型,(这里要注意的是:类型推断只使用于泛型方法转载 2017-07-20 11:13:06 · 344 阅读 · 0 评论 -
深入理解动态类型
本专题概要:动态类型介绍 为什么需要动态类型 动态类型的使用 动态类型背后的故事 动态类型的约束 实现动态行为 总结引言: 终于迎来了我们C# 4中特性了,C# 4主要有两方面的改善——Com 互操作性的改进和动态类型的引入,然而COM互操作性这里就不详细介绍的,对于.Net 互操作性我将会在另外一个专题中详细和大家分享下我所了解到的知识,本专题就和大家分享C# 4中的动态...转载 2017-07-11 23:38:05 · 2209 阅读 · 0 评论 -
C#中Action、Func、Tuple、Predicate的使用
Action和Func泛型委托实际上就是一个.NET Framework预定义的委托,3.5引入的特性。基本涵盖了所有常用的委托,所以一般不用用户重新声明。Action系列泛型委托,是没有返回参数的委托,最多可以有16参数,也可以没有参数;Func系列的委托是有返回值的委托,最多可以有16个参数;元组是C# 4.0引入的一个新特性,编写的时候需要基于.NET Framework 4.0或者...转载 2017-07-12 09:23:40 · 442 阅读 · 0 评论 -
C#反射操作常用方法
/// /// 生成程序集对象 /// /// /// public static Assembly GetAssembly(string assemblyPath) { return Assembly.LoadFile(assemblyPath); }转载 2017-07-06 17:40:18 · 205 阅读 · 0 评论