摘要:
BigInteger和Complex是.NET 4中新增的两种值类型,他们位于System.Numeric命名空间下,需要单独添加引用。BigInteger BigInteger类型是不可变类型,代表了一个任意大的整数,其值理论上已经没有上限和下限。此类型不同于.NET Framework其他整型,... 阅读全文
随笔分类 - c#
C# 并行 反射 去掉实体属性多余空格
2013-11-06 10:52 by Eric.Hu, 658 阅读, 收藏, 编辑
摘要:
有时会遇到很多不合理的数据附件到实体后有大量空格需要处理,这里提供一个方法,通过并行反射的方式高效清理空格。Code://清除字符串空格 public static object TrimString(object obj){try {Type t = obj.GetType();PropertyInfo[] ... 阅读全文
HashTable 与 Dictionary
2013-01-27 20:43 by Eric.Hu, 314 阅读, 收藏, 编辑
摘要:
Hashtable 和 Dictionary <K, V> 类型 1:单线程程序中推荐使用 Dictionary, 有泛型优势, 且读取速度较快, 容量利用更充分. 2:多线程程序中推荐使用 Hashtable, 默认的 Hashtable 允许单线程写入, 多线程读取, 对 Hashtable 进一步调用 Synchronized() 方法可以获得完全线程安全的类型. 而 Dictionary 非线程安全, 必须人为使用 lock 语句进行保护, 效率大减. 3:Dictionary 有按插入顺序排列数据的特性 (注: 但当调用 Remove() 删除过节点后顺序被打乱), 因此 阅读全文
用委托实现B窗体刷新A窗体
2012-11-20 16:17 by Eric.Hu, 241 阅读, 收藏, 编辑
摘要:
1/*假设FormA为某信息列表界面,FormB为信息编辑界面。要实现的功能:在FormA界面上添加“编辑”按钮,选择列表中选择一条数据A,点击此按钮跳转至FormB界面编辑A的数据,在FormB界面上编辑完A信息,点击“保存”按钮保存数据后,及时更新FormA列表信息。*/23//界面FormA中关键代码:45privatevoidbtEdit_Click(objectsender,EventArgse)6{7FormBfrm=newFormB();8frm.Refresh+=newFormB.RefreshHandle(frm_Refresh);9frm.ShowDialog();10}1 阅读全文
用 C# 编写查询 (LINQ) [转MSDN]
2012-10-25 14:52 by Eric.Hu, 472 阅读, 收藏, 编辑
摘要:
创建面向 .NET Framework 3.5 版的 C# 项目启动 Visual Studio。在“文件”菜单上指向“新建”,再单击“项目”。在“新建项目”对话框的右上角有三个图标。单击左边的图标并确保选中“.NET Framework 3.5 版”。单击“Visual Studio 已安装的模板”下面的“控制台应用程序”图标。为您的应用程序输入新的名称或接受默认名称,然后单击“确定”。请注意,您的项目具有对 System.Core.dll 的引用以及适用于System.Linq命名空间的using指令。创建内存中数据源查询的数据源是Student对象的简单列表。每个Student记录都有名 阅读全文
C# 调用并执行SQL脚本文件
2012-05-25 14:19 by Eric.Hu, 17764 阅读, 收藏, 编辑
摘要:
突然接到leader的任务,为运维写个小工具,给一个参数然后调用一个sql脚本文件并替换器内部某个参数,然后执行.于是工作开始了...首先想到的是能让C#程序直接执行sql脚本文件,类似SSMS直接打开sql文件并执行一样,搜索了一下结果还真有,不过需要借用mssql的几个类库及命名空间:Microsoft.SqlServer.ConnectionInfo.dllMicrosoft.SqlServer.Smo.dll--------------------------------------------usingMicrosoft.SqlServer.Management.Common;usi 阅读全文
设计模式 -- C#单件模式 [转]
2012-05-09 14:17 by Eric.Hu, 286 阅读, 收藏, 编辑
摘要:
.Net的单件模式.主要为三种.1、单线程环境下的单件模式实现PS. 如果缺少private,编译器会自动生成一个public的构造。所以必须声明一个私有的private构造函数.usingSystem;namespaceSingleton{publicclassSingleton{privateSingleton(){}privatestaticSingletoninstance;publicstaticSingletonInstance{get{if(instance==null)instance=newSingleton();returninstance;}}}}2、多线程下使用双重锁定 阅读全文
一个容易忽略的问题-- 调用ServiceDescriptionImporter出错
2012-04-23 11:32 by Eric.Hu, 1858 阅读, 收藏, 编辑
摘要:
最近在研究动态调用WEBService的方法,其中一个地方要用到ServiceDescriptionImporterSystem.Web.Services.Description.ServiceDescriptionImporter命名空间:System.Web.Services.Description程序集:System.Web.Services(在 System.Web.Services.dll 中)问题在于我已经添加了System.Web.Services.Description的引用,但编辑器依然无法识别该类,我用的是vs2010,.net framework 4.0;查找问题,跟踪问 阅读全文
C#实现排列组合算法
2011-11-08 16:31 by Eric.Hu, 4591 阅读, 收藏, 编辑
摘要:
数学中排列组合,排列P(N,R)其实排列实现了,组合也就实现了组合C(N,R)就是P(N,R)/P(R,R) ,比较简单的是递归算法,但考虑到递归的性能,下面采用了2种非递归的方法,代码如下using System;using System.Collections.Generic;namespace Test{ class Program { static void Main(string[] args) { Console.WriteLine(P1(6, 3)); Console.WriteLine(P2(... 阅读全文
C#实现所有经典排序算法(选择排序 冒泡排序 快速排序)
2011-11-08 16:21 by Eric.Hu, 1084 阅读, 收藏, 编辑
摘要:
1、选择排序class SelectionSorter{private int min;public void Sort(int[] arr){for (int i = 0; i < arr.Length - 1; ++i){min = i;for (int j = i + 1; j < arr.Length; ++j){if (arr[j] < arr[min])min = j;}int t = arr[min];arr[min] = arr[i];arr[i] = t;}}static void Main(string[] args){int[] array = new 阅读全文
C# 使用 Override 和 New 关键字进行版本控制
2011-10-25 11:22 by Eric.Hu, 221 阅读, 收藏, 编辑
摘要:
C# 语言经过专门设计,以便不同库中的在 C# 中,派生类可以包含与基类方法同名的方法。基类方法必须定义为 如果派生类中的方法前面没有 如果派生类中的方法前面带有 new 关键字,则该方法被定义为独立于基类中的方法。如果派生类中的方法前面带有 override 关键字,则派生类的对象将调用该方法,而不是调用基类方法。可以从派生类中使用 base 关键字调用基类方法。override、virtual 和 new 关键字还可以用于属性、索引器和事件中。默认情况下,C# 方法为非虚方法。如果某个方法被声明为虚方法,则继承该方法的任何类都可以实现它自己的版本。若要使方法成为虚方法,必须在基类的方法声明 阅读全文
VS2010自定义新建文件模版
2011-10-18 17:22 by Eric.Hu, 519 阅读, 收藏, 编辑
摘要:
对于具有规定机器的开发人员,对新建的文件自动添加版本,添加人,添加时间等信息。 具体操作如下: 1、打开VS2010安装目录,如:I:\Program Files\Microsoft Visual Studio 10.0\Common7\IDE\ItemTemplates 在这个目录下,你将看到要创建各种类型的目录列表,打开你要设置的文件,如:CSharp 目录下的Windows Forms\2052下的Form.zip 在此压缩包中存在的就是新建文件的模版,如果修改此Form.cs,则当你新建一个Form文件时,就会出现你定义好的模版。下边我们来看模版怎么修改。 打开此压缩文件... 阅读全文
C# Lambda 表达式
2011-10-18 10:15 by Eric.Hu, 764 阅读, 收藏, 编辑
摘要:
“Lambda 表达式”是一个匿名函数,它可以包含表达式和语句,并且可用于创建委托或表达式目录树类型。所有 Lambda 表达式都使用 Lambda 运算符 ,该运算符读为“goes to”。该 Lambda 运算符的左边是输入参数(如果有),右边包含表达式或语句块。Lambda 表达式 x => x * x 读作“x goes to x times x”。可以将此表达式分配给委托类型,如下所示:delegate int del(int i);del myDelegate = x => x * x;int j = myDelegate(5); //j = 25创建表达式目录树类型: 阅读全文
C# 匿名函数
2011-10-18 09:42 by Eric.Hu, 775 阅读, 收藏, 编辑
摘要:
委托是一种包装方法调用的类型。就像类型一样,可以在方法之间传递委托实例,并且可以像方法一样调用委托实例。匿名函数是一个“内联”语句或表达式,可在需要委托类型的任何地方使用。可以使用匿名函数来初始化命名委托,或传递命名委托(而不是命名委托类型)作为方法参数。Lambda 表达式可以绑定到表达式目录树,也可以绑定到委托。示例:class Test{ delegate void TestDelegate(string s); static void M(string s) { Console.WriteLine(s); } static void Main... 阅读全文
C# 将 RTF 转换为纯文本
2011-10-17 12:21 by Eric.Hu, 1448 阅读, 收藏, 编辑
摘要:
在 .NET Framework 中,可以使用 控件创建支持 RTF 且支持用户以 WYSIWIG 方式将格式应用于文本的字处理器。也可以使用 以编程方式将 RTF 格式代码从文档中移除,从而将该文档转换为纯文本。执行这种类型的操作无需在 Windows 窗体中嵌入该控件。在项目中使用 RichTextBox 控件添加对 System.Windows.Forms.dll 的引用。为 System.Windows.Forms 命名空间添加 using 指令(可选)。示例下面的示例提供一个要转换的示例 RTF 文件。该文件包含 RTF 格式,例如字体信息,还包含四个 Unicode 字符和四个.. 阅读全文
C# 使用 ref 和 out 传递数组
2011-10-14 17:15 by Eric.Hu, 807 阅读, 收藏, 编辑
摘要:
与所有的 out 参数一样,在使用数组类型的 out 参数前必须先为其赋值,即必须由被调用方为其赋值。staticvoidTestMethod1(outint[]arr){arr=newint[10];//definiteassignmentofarr}与所有的 ref 参数一样,数组类型的 ref 参数必须由调用方明确赋值。因此不需要由接受方明确赋值。可以将数组类型的 ref 参数更改为调用的结果。例如,可以为数组赋以 null 值,或将其初始化为另一个数组。staticvoidTestMethod2(refint[]arr){arr=newint[10];//arrinitial... 阅读全文
C# 一维 多维 交叉数组
2011-10-14 10:19 by Eric.Hu, 884 阅读, 收藏, 编辑
摘要:
数组是一种数据结构,它包含若干相同类型的变量。数组是使用类型声明的: type[] arrayName; 下面的示例创建一维、多维和交错数组:classTestArraysClass{staticvoidMain(){//Declareasingle-dimensionalarrayint[]array1=newint[5];//Declareandsetarrayelementvaluesint[]array2=newint[]{1,3,5,7,9};//Alternativesyntaxint[]array3={1,2,3,4,5,6};//Declareatwodimensionala. 阅读全文
C# 数组打印分割简单处理
2011-10-13 22:32 by Eric.Hu, 455 阅读, 收藏, 编辑
摘要:
C# 数组打印分割简单处理方法:System.Console.Write(arr[i] + "{0}", i < arr.Length - 1 ? " " : "")或者 :System.Console.Write(arr[i] + "{0}", i < arr.Length - 1 ? " & " : "") 阅读全文
C#将字符串转换为整型
2011-10-13 14:59 by Eric.Hu, 477 阅读, 收藏, 编辑
摘要:
intnumVal=Convert.ToInt32("29");numVal++;Console.WriteLine(numVal);//Output:30=================================================intnumVal=Int32.Parse("-105");Console.WriteLine(numVal);//Output:-105==================================================intj;Int32.TryParse("-105&quo 阅读全文
C#装箱和取消装箱
2011-10-13 14:43 by Eric.Hu, 721 阅读, 收藏, 编辑
摘要:
装箱是将值类型转换为 object 类型或由此值类型实现的任一接口类型的过程。当 CLR 对值类型进行装箱时,会将该值包装到 System.Object 内部,再将后者存储在托管堆上。取消装箱将从对象中提取值类型。在下面的示例中,整型变量 i 装箱并赋给对象 o。int i = 123;object o = (object)i; // boxingo = 123;i = (int)o; // unboxing相对于简单的赋值而言,装箱和取消装箱过程需要进行大量的计算。对值类型进行装箱时,必须分配并构造一个新对象。次之,取消装箱所需的强制转换也需要进行大量的计算。装箱用于在垃圾回收堆中存储... 阅读全文