
.NET基础语法
aspnet2002web
在大学担任.NET/JAVA的教学,在公司从事C#.NET,Java,ASP.NET,SSH,Wacs,KShell,JavaScript,Jquery,MsSQL,DB2等的开发和利用,对其他技术也一直保持关注。
展开
-
用Activator .CreateInstance代替new实现类的实例化Assembly.CreateInstance()与Activator.CreateInstance()方法的区别
<br />我一直想得到这样一个函数,输入一个类的名称为参数,返回一个相应的类的实例.<br />这在工厂模式中是非常有用的<br />这样,可以使程序有更高的扩展性,例如,,下面的例子<br />如果现在有一个类,专门用来计算交通工具的速度,不同的交通工具计算方法是不一样的,但是到底有那些交通工具是未知的或者是可变的,这种情况下,我们可能觉得要在添加交通工具的时候,需要修改用来计算速度的那个类,<br />但如果用Activator .CreateInstance创建实例,通过接口技术,则只要向程序集添加转载 2010-12-02 14:55:00 · 1579 阅读 · 0 评论 -
获取项目路径或文件路径
“Application.StartupPath”:获取当前应用程序所在目录的路径,最后不包含“/”;“Application.ExecutablePath ”:获取当前应用程序文件的路径,包含文件的名称;“AppDomain.CurrentDomain.BaseDirectory”:获取当前应用程序所在目录的路径,最后包含“/”;“System.Threading.Thread.GetDomain().BaseDirectory”:获取当前应用程序所在目录的路径,最后包含“/”;“Environment.原创 2010-12-15 22:32:00 · 1437 阅读 · 0 评论 -
序列化与反序列化
<br />序列化:是将对象的状态存储到特定的存储介质中的过程,在序列化的过程中,会将对象的公有成员,私有成员包括类名,都转换成数据流的形式,存储到存储介质中,<br />反序列化:是从将特定存储介质中数据重新构建对象的过程.通过反序列化,可以将文件上的对象信息读取,然后重新构建为对象.<br />一个类要实现序列化,这个类的特性必须被标识为[Serializable]<br />序列化保存到存储介质上的文件为二进制文件,因此要对二进制进行操作,要引入命名空间:<br />using System.Runt原创 2010-12-15 09:28:00 · 540 阅读 · 0 评论 -
析构函数用于析构类的实例
<br />备注<br />· 不能在结构中定义析构函数。只能对类使用析构函数。<br />· 一个类只能有一个析构函数。<br />· 无法继承或重载析构函数。<br />· 无法调用析构函数。它们是被自动调用的。<br />· 析构函数既没有修饰符,也没有参数。<br />例如,下面是类Car的析构函数的声明:<br />class Car<br />{<br /> ~ Car() // destructor<br原创 2010-12-18 00:54:00 · 1292 阅读 · 0 评论 -
IEnumerable 接口---实现该接口里的成员的类,可以使用foreach循环访问集合
<br />IEnumerable 接口支持对非泛型集合的简单迭代。实现该接口里的成员的类,可以使用foreach循环访问集合(VB为For Each)。<br /><br /> 备注<br />IEnumerator 是所有非泛型枚举数的基接口。<br />有关此接口的泛形版本,请参见 IEnumerator<(Of <(T>)>)。<br />C# 语言的 foreach 语句(在 Visual Basic 中为 for each)隐藏了枚举数的复杂性。因此,建议使用foreach,而不直接原创 2010-12-18 01:10:00 · 1373 阅读 · 0 评论 -
.NET中yield关键字的用法
<br /> yield在迭代器块中用于向枚举数对象提供值或发出迭代结束信号。它的形式为下列之一:<br />yield return <expression>;<br />yield break;<br /> <br />计算表达式并以枚举数对象值的形式返回;expression 必须可以隐式转换为迭代器的 yield 类型。<br />yield 语句只能出现在 iterator 块中,该块可用作方法、运算符或访问器的体。这类方法、运算符或访问器的体受以下约束的控制:<br />l 不允许不安原创 2010-12-18 01:14:00 · 5599 阅读 · 0 评论 -
什么是迭代器,创建并使用迭代器.为整数列表创建迭代器.为泛型列表创建迭代器
迭代器导读什么是迭代器创建并使用迭代器为整数列表创建迭代器为泛型列表创建迭代器什么是迭代器迭代器(iterator)迭代器是一种方法、get 访问器或运算符,它通过使用 yield 关键字对数组或集合类执行自定义迭代。yield 返回语句会导致源序列中的元素在访问源序列中的下一个元素之前立即返回给调用方。尽管您以方法的形式编写迭代器,但编译器会将其转换为一个实际上是状态机的嵌套类。只要客户端代码中的 foreach 循环继续进行,此类就会跟踪迭代器的位置。注意:若要了解编译器在后台执行了什么操作,请使用 I原创 2010-12-18 01:16:00 · 1436 阅读 · 1 评论 -
Session,ViewState用法
基本理论:session值是保存在服务器内存上,那么,可以肯定,大量的使用session将导致服务器负担加重. 而viewstate由于只是将数据存入到页面隐藏控件里,不再占用服务器资源,因此, 我们可以将一些需要服务器"记住"的变量和对象保存到viewstate里面. 而sesson则只应该应用在需要跨页面且与每个访问用户相关的变量和对象存储上. 另外,session在默认情况下20分钟就过期,而viewstate则永远不会过期. 数据类型:但viewstate并不是能存储所有的.net类型数据,它仅仅支原创 2010-12-17 23:45:00 · 1415 阅读 · 0 评论 -
匿名方法---将代码块作为参数传递给委托
在 2.0 之前的 C# 版本中,声明委托的唯一方法是使用命名方法。C# 2.0 引入了匿名方法,而在 C# 3.0 及更高版本中,Lambda 表达式取代了匿名方法,作为编写内联代码的首选方式。不过,本主题中有关匿名方法的信息同样也适用于 Lambda 表达式。有一种情况下,匿名方法提供了 Lambda 表达式中所没有的功能。匿名方法使您能够省略参数列表,这意味着可以将匿名方法转换为带有各种签名的委托。这对于 Lambda 表达式来说是不可能的。 要将代码块传递为委托参数,创建匿名方法则是唯原创 2010-12-18 00:58:00 · 1885 阅读 · 0 评论 -
C# 集合类 Array、Arraylist、List、Hashtable、Dictionary、Stack、Queue区别
1.数组是固定大小的,不能伸缩。虽然System.Array.Resize这个泛型方法可以重置数组大小,但是该方法是重新创建新设置大小的数组,用的是旧数组的元素初始化。随后以前的数组就废弃!而集合却是可变长的2.数组要声明元素的类型,集合类的元素类型却是object. 3.数组可读可写不能声明只读数组。集合类可以提供ReadOnly方法以只读方式使用集合。4.数组要有整数下标才能访问特定的元素,然而很多时候这样的下标并不是很有用。集合也是数据列表却不使用下标访问。很多时候集合有定制的下标类型,对于队列和栈根原创 2010-12-15 13:50:00 · 945 阅读 · 0 评论 -
面向对象的几个概念性问题
using System;using System.Collections.Generic;using System.Text;namespace oop{ classPerson { publicstring name; publicint age; /** * static修饰的字段 * * 用static修饰的字段,它们属于类,而不属于类的某一个实例, * 也就是说,在调用静态字段时转载 2010-12-14 19:07:00 · 533 阅读 · 0 评论 -
类型参数的约束(C# 编程指南)
类型参数的约束(C# 编程指南) 在定义泛型类时,可以对客户端代码能够在实例化类时用于类型参数的类型种类施加限制。如果客户端代码尝试使用某个约束所不允许的类型来实例化类,则会产生编译时错误。这些限制称为约束。约束是使用 where 上下文关键字指定的。下表列出了六种类型的约束:约束 说明 T:结构类型参数必须是值类型。可以指定除 Nullable 以外的任何值类型。有关更多信息,请参见使用可空类型(C# 编程指南)。T:类类型参数必须是引用类型,包括任何类、接口、委托或数组类型。T:new()类型参数必原创 2010-12-02 17:08:00 · 494 阅读 · 0 评论 -
Func 委托
<br />.NET Framework 4<br />·.NET Framework 3.5<br />·Silverlight <br />此内容为质量更高的人工翻译。若想同时查看此页面和原始英文页面的内容,请单击“首选项”然后选择“经典视图”作为您的查看首选项。<br />封装一个具有一个参数并返回TResult 参数指定的类型值的方法。<br />命名空间: System<br />程序集: mscorlib(在 mscorlib.dll 中)<br />语法<br />C#<br />publ原创 2010-12-03 12:53:00 · 1592 阅读 · 0 评论 -
.NET 3.5中的新事物--Func和Action
<br />Func和Action都是一种委托,这是在3.5里面新增的。2.0里面我们使用委托是用Delegate,Func位于System.Core命名空间下,使用委托可以提升效率,例如在反射中使用就可以弥补反射所损失的性能。<br />Action<T>和Func<T,TResult>的功能是一样的,只是Action<T>没有返类型,<br />Func<T,T,Result>有参数,有返回类型,Action,则既没有返回也没有参数。<br />在C#开发环境下,选择Func,然后按下F12切换到此内容原创 2010-12-03 13:10:00 · 1011 阅读 · 0 评论 -
Activator.CreateInstance(T) 方法
创建类型的一个实例,该类型由指定的泛型类型参数指定。也就是创建一个泛型参数所属类型的对象。C#publicstatic T CreateInstance()VB'声明PublicSharedFunction CreateInstance(Of T) As T'用法Dim returnValue As TreturnValue = Activator.CreateInstance()类型参数T 要创建的类型。返回值类型:T对新创建对象的引用。备注--------------------------------原创 2010-12-02 15:16:00 · 7616 阅读 · 0 评论 -
Action 委托
<br />.NET Framework 4<br />封装一个方法,该方法只有一个参数并且不返回值。<br />命名空间: System<br />程序集: mscorlib(在 mscorlib.dll 中)<br />语法<br />C# <br />publicdelegatevoid Action<in T>(<br /> T obj<br />)<br />VB<br />'声明<br />PublicDelegateSub Action(Of In T) ( _<br />原创 2010-12-03 13:04:00 · 688 阅读 · 0 评论 -
.NET : Func委托和Action委托
上一篇我们讲到了如何在ASP.NET页面中实现异步任务。我们来回顾一下里面一个特殊的类型:LongTimeTaskusing System;using System.Threading;publicclassLongTimeTask{ publicstring Result = string.Empty; public HelloWorldHandler handler; public delegate string HelloWorldHandler(); publicstring原创 2010-12-03 13:31:00 · 618 阅读 · 0 评论 -
判断数据库连接状态
<br />1.第一种(没有sqlconnection这个对象) <br />Java代码 <br />1. if(conn== null) <br />2. conn.open() <br />C#代码 <br />1. if(conn== null) <br />2. conn.open() <br />if(conn==null)<br />conn.open()<br /><br />2.第二种(数据库是关闭的) <br />Java代码 <br />1. if(con原创 2010-12-07 14:22:00 · 6038 阅读 · 0 评论 -
SqlDateTime 溢出。必须介于 1/1/1753 12:00:00 AM 和 12/31/9999 11:59:59 PM之间---解决办法
<br />原因:<br />传给数据库的时间类型的值为NULL,或者为DateTime.MinValue<br />这里的NULL指的是程序代码里面的null,大多数出现这种情况的情景是:在程序里面定义了一个时间类型的变量,没有给赋值,就传给数据库(或存储过程了)。这时这个变量的值默认是赋成了01年01月01日。<br />测试以下代码:<br />using System;<br />using System.Collections.Generic;<br />using System.Linq;<br原创 2010-12-08 19:11:00 · 6065 阅读 · 2 评论 -
对于List的All,Any,Where,FirstOrDefault,Average,Sum,Distinct,Union,AddRange,RemoveRange,InsertRange,GetRange操作
对于集合的操作发现现在越来越丰富,今日圣诞节,以常用的List为例静静地看了集合的一些操作,用了发现还真方便。一、集合的合并,插入,删除,显示AddRange(一个集合):将指定集合的元素添加到末尾。RemoveRange(要移除的元素的范围从零开始的起始索引,要移除的元素数):移除一定范围的元素InsertRange(在此处插入新元素的从零开始的索引,一个集合):将集合插入到指定索引处。也可以对集合选择范围后再插入GetRange(范围开始处从零开始的起始索引,范围中的元素数):返回指定范围的数据,此数据原创 2010-12-25 18:01:00 · 5095 阅读 · 0 评论 -
C#.NET和SQL Server中如何生成GUID
GUID(全局统一标识符)是指在一台机器上生成的数字,它保证对在同一时空中的所有机器都是唯一的。通常平台会提供生成GUID的API。生成算法很有意思,用到了以太网卡地址、纳秒级时间、芯片ID码和许多可能的数字。GUID的唯一缺陷在于生成的结果串会比较大。” 1. 一个GUID为一个128位的整数(16字节),在使用唯一标识符的情况下,你可以在所有计算机和网络之间使用这一整数。 2. GUID 的格式为“xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx”,其中每个 x 是 0-9 或原创 2010-12-31 15:50:00 · 3851 阅读 · 2 评论 -
.NET 里as 与is 的区别和用途
is : 检查一个对象是否兼容于其他指定的类型,并返回一个Bool值,永远不会抛出异常 object o = new object(); if (o is Label) { Label lb = (Label)o; Response.Write("类型转换成功"); } else { Response.Wri原创 2010-12-28 19:21:00 · 876 阅读 · 0 评论 -
.NET 文件上传设定
<br />.net中默只能上传小于4m的文件,大于4M将无法显示页面.那么如何设置来使imputfile能上传更大的文件呢,<br /> 1、环境:window 2003 ,IIS6.0要首先要修改IIS6.0中的asp请求的最大字节数,默认时为200K;方法:打开位于 C:/Windows/System32/Inetsrv 中的 metabase.XML,并修改 AspMaxRequestEntityAllowed 为你需要的值(例如 "1073741824", 1GB);技术背景:在 IIS 6.0转载 2011-01-24 22:25:00 · 748 阅读 · 0 评论 -
解决C# ASP .NET下载出现中文文件名乱码的问题
Response.ContentType = mime; //相应的MIME TYPE Response.AppendHeader("Content-Disposition", "attachment; filename=/"" +fileName + "/""); Response.BinaryWrite(bytes); Response.End(); ... 当fileName中包含中文时, 文件下载保存时, 文件名变成了乱码, 需要用户修改,这也就违被了我设定预设文件名的初衷. 解决转载 2011-01-25 02:30:00 · 1494 阅读 · 0 评论 -
DateTime.ParseExact的使用
<br />c#中关于时间转换提供了两种方法:DateTime.ParseExact()和 Convert.ToDateTime(string),ParseExact使用起来会更加灵活,可以由用户自己来定义时间格式,比如数据库里某字段的值都是20071225这种形式,我们可以这样转换:<br />DateTime time1 = DateTime.ParseExact(dt,"yyyyMMdd", null);<br />dt为这样的字符串:"20071225<br /> <br />来自:http转载 2011-01-27 15:59:00 · 1533 阅读 · 0 评论 -
如何获得枚举中的值
<br />using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace ConsoleApplication1{ class Program { static void Main(string[] args) { //获得枚举名 Console.Write原创 2011-01-28 13:25:00 · 3934 阅读 · 0 评论 -
DateTime.Compare(t1,t2)比较两个日期大小
DateTime.Compare(t1,t2)比较两个日期大小,排前面的小,排在后面的大,比如:2011-2-1就小于2012-3-2值类型 条件 小于零 t1 小于 t2。 零 t1 等于 t2。 大于零 t1 大于 t2。 返回值小于零: t1 小于 t2。 返回值等于零 : t1 等于 t2。 返回值大于零: t1 大于 t2。 如:using System;using System.Collections.Generic;using System.Linq;using System.原创 2011-02-01 10:40:00 · 30882 阅读 · 0 评论 -
Asp.Net中String.Empty、null和""的区别
string.Empty不分配存储空间""分配一个长度为空的存储空间 所以一般用string.Empty为了以后跨平台,还是用string.empty在 C# 中,大多数情况下 "" 和 string.Empty 可以互换使用。比如:string s ="";string s2 =string.Empty;if (s ==string.Empty) {}if语句成立 判定为空字符串的几种写法,按照性能从高到低的顺序是:s.Length == 0 优于 s == string.Empty 优于 s == "转载 2011-02-17 11:23:00 · 820 阅读 · 0 评论 -
.NET的数据绑定之DataFormatString,对于日期数字的格式化
设定BoundField的DataFormatString,通常有以下几种 DataFormatString= "{0:C}" 货币,货币的格式取决于当前Thread中Culture的设置 DataFormatString= "{0:E}" 科学计数法 DataFormatString= "{0: P}" 百分比 DataFormatString= "{0:F?}" 小数点后几位原创 2012-05-20 18:26:22 · 5950 阅读 · 0 评论 -
.NET中颜色与字符串互换
string c1 = System.Drawing.ColorTranslator.ToHtml(System.Drawing.Color.Red); // c1 = "#ff0000";或c1 = "Red"; System.Drawing.Color c2 = System.Drawing.ColorTranslator.FromHtml("#ff0000")原创 2013-05-15 21:04:39 · 1193 阅读 · 0 评论 -
nchar,char,varchar与nvarchar区别
<br />Unicode字符集就是为了解决字符集这种不兼容的问题而产生的,它所有的字符都用两个字节表示,即英文字符也是用两个字节表示<br />sql server中的varchar和Nvarchar有什么区别啊,varchar好像是一个英文和一个汉字都站两个字节,而Nvarchar则是一个英文占一个字节,汉字占两个字节。可是这个对asp程序有什么影响? 答:<br />varchar(n)<br />长度为 n 个字节的可变长度且非 Unicode 的字符数据。n 必须是一个介于 1 和 8,000 之转载 2010-11-24 15:48:00 · 834 阅读 · 0 评论 -
匈牙利命名法、Camel命名法与Pascal命名法
<br />匈牙利命名法:首字母小写,基本原则是:变量名=属性+类型+对象描述,其中每一对象的名称都要求有明确含义,可以取对象名字全称或名字的一部分。命名要基于容易记忆容易理解的原则。保证名字的连贯性是非常重要的。<br />在Windows编程中使用非常普遍,由微软的一位匈牙利程序员Charles Simonyi 提出。匈牙利命名法通过在变量名前面加上相应的小写字母的符号标识作为前缀,标识出变量的作用域、类型等。例如,m_lpszStr表示指向一个以0字符结尾的字符串的长指针成员变量。匈牙利命名法是一种编原创 2010-11-23 14:38:00 · 9273 阅读 · 0 评论 -
HTTP POST GET 本质区别详解
<br /> <br />一 原理区别<br /> 一般在浏览器中输入网址访问资源都是通过GET方式;在FORM提交中,可以通过Method指定提交方式为GET或者POST,默认为GET提交<br />Http定义了与服务器交互的不同方法,最基本的方法有4种,分别是GET,POST,PUT,DELETE<br />URL全称是资源描述符,我们可以这样认为:一个URL地址,它用于描述一个网络上的资源,而HTTP中的GET,POST,PUT,DELETE就对应着对这个资源的查 ,改 ,增 ,删 4个操作。原创 2011-01-06 09:27:00 · 593 阅读 · 0 评论 -
提高C#编程水平的50个要点
1.总是用属性 (Property) 来代替可访问的数据成员2.在 readonly和 const之间,优先使用 readonly3.在 as和 强制类型转换之间,优先使用 as操作符4.使用条件属性 (Conditional Attributes) 来代替条件编译语句 #if5.总是为自定义类重载 ToString方法6.区别值类型和引用类型7.使用不可变的值类型(Immutable Atomic Value Types)8.在值类型中,确保0是一个合法的数据9.理解 ReferenceEquals,st转载 2011-01-12 19:03:00 · 781 阅读 · 0 评论 -
获得现在到1970-1-1的毫秒数
<br />获得现在到1970-1-1的毫秒数<br />//方法一double x = DateTime.Now.Subtract(DateTime.Parse("1970-1-1")).TotalMilliseconds;//方法二TimeSpan ts=DateTime.Now - DateTime.Parse("1970-1-1");double x =ts.TotalMilliseconds;<br />原创 2011-01-11 13:08:00 · 3849 阅读 · 0 评论 -
.NET 中格式化数据的一些方法和格式说明
<br />//.NET Framework 提供了 标准数字格式字符串,标准 DateTime 格式字符串,枚举格式字符串,以下代码描述了标准数字格式字符串的方式double d = 1234.5678;System.Console.WriteLine("数字原型 {0}", d.ToString()); //1234.5678System.Console.WriteLine("货币格式 {0}", d.ToString("C")); //¥1,234转载 2010-11-20 20:08:00 · 517 阅读 · 0 评论 -
实现表格隔行变色研究
表格隔行变色,是很多项目中经常用到的,今日闲着没事就对表格隔行变色做了些研究,这里共找了4种方法,所有方法实现的效果如下:一、隔行给TR的class赋值,来实现隔行变色 首先在样式里建立表格隔行变色的样式累类,如下代码: .tbDatalist tr.altrow { background-color: #a5e5aa; } 然后在table的隔行tr里,增加此样式,这种方式比较原始和麻烦完整代码如原创 2010-11-21 02:26:00 · 1196 阅读 · 0 评论 -
.NET进行Json的序列化和反序列化
最近发现在不同模块交换数据的时候,不仅可以用XML,也可以用Json,而且Jquery与Json格式的数据结合的非常好,方便前台代码操作数据,所以经常把数据转换为Json,输出到网页里,然后获得方把数据进行反序列化。个人觉得如果这个数据时后台操作,可以把数据转换为XML形式输出到网页里,参见我的上篇文章《把XML文件输出到一个网页里》,如果这个对象数据是让前台JavaScript来获得,则需要把数据转换为Json的形式来输出到网页里或一般处理程序(ashx)里比较合适。1、添加引用System.Runtim原创 2010-11-23 00:15:00 · 1303 阅读 · 0 评论 -
XML序列化与反序列化 整理文档
xml序列化答疑 (1)需序列化的字段必须是公共的(public) (2)需要序列化的类都必须有一个无参的构造函数 (3)枚举变量可序列化为字符串,无需用[XmlInclude] (4)导出非基本类型对象,都必须用[XmlInclude]事先声明。该规则递归作用到子元素 如导出ArrayList对象,若其成员是自定义的,需预包含处理: using System.Xml.Serialization; [XmlIncl转载 2010-11-22 21:57:00 · 698 阅读 · 0 评论 -
用 System.Xml 读写XML 整理文档
XML概念 Root XML根节点,只能且必须有一个(以上为LinkLibrary) Element 节点元素(如Link) Attribute 节点属性(如Cat, Url, Desc) Content 内容(非空白文本、CDATA、Element、EndElement、EntityReference 或 EndEntity)节点 System.Xml空间 以下类适合快速流式读写XML文件(注:DOM适合随转载 2010-11-22 21:50:00 · 746 阅读 · 0 评论