公告 公告:  祝大家在虎年里,虎虎生威!生意红火,事业有成!当然,还有爱情大丰收 *__*
CSBlogV2.11问题收集与信息反馈   ;   CSCMSV1正式上线公测
CSWave系列官方QQ群:24301472(最新版的一般都先发布在共享里哟) 。
[ 一线风 | 2007-8-14 17:15:12 | 阅读: 1196 | 分类: C#/.Net ]
(1)用于对静态字段、只读字段等的初始化。        
(2)添加static关键字,不能添加访问修饰符,因为静态构造函数都是私有的。     
(3)类的静态构造函数在给定应用程序域中至多执行一次:只有创建类的实例或者引用类的任何静态成员才激发静态构造函数 
(4)静态构造函数是不可继承的,而且不能被直接调用。       
(5)如果类中包含用来开始执行的  Main  方法,则该类的静态构造函数将在调用  Main  方法之前执行。   
        任何带有初始值设定项的静态字段,则在执行该类的静态构造函数时,先要按照文本顺序执行那些初始值设定项。  
(6)如果没有编写静态构造函数,而这时类中包含带有初始值设定的静态字段,那么编译器会自动生成默认的静态构造函数。 

以下用例子代码进一步说明: 
/************************************************** 
  *                        静  态  构  造  函  数  练  习 

新窗口 阅读全文及评论...

[ 一线风 | 2007-7-18 15:19:45 | 阅读: 1311 | 分类: C#/.Net ]
事件简介:

  任何进行过图形用户界面开发的编程人员都会知道事件的概念。当用户在使用程序的时候,用户必然要和程序进行一定的交互。比如当用户点击窗体上的一个按钮后,程序就会产生该按钮被点击的事件,并通过相应的事件处理函数来响应用户的操作。这样用户的直观感觉就是程序执行了我要求的任务了。当然,事件并不一定是在和用户交互的情况下才会产生的,系统的内部也会产生一些事件并请求处理的,比如时钟事件就是一个很好例子。不过要介绍C#中的事件处理机制(扩展到更广的范围便是整个.Net框架),我们首先得明白一个叫"委托"的概念。

  C#中的委托:

  委托,顾名思义,就是中间代理人的意思。C#中的委托允许你将一个对象中的方法传递给另一个能调用该方法的类的某个对象。你可以将类A中的一个方法m(被包含在某个委托中了)传递给一个类B,这样类B就能调用类A中的方法m了。同时,你还可以以静态(static)的方式或是实例(instance)的方式来传递该方法。所以这个概念和C++中的以函数指针为参数形式调用其他类中的方法的概念是十分类似的。

  委托的概念首先是在Visual  J++中被提出来的,现在C#也应用了委托的概念,这也可谓是"拿来主义"吧。C#中的委托是通过继承System.Delegate中的一个类来实现的,下面是具体的步骤:

  1.  声明一个委托对象,其参数形式一定要和你想要包含的方法的参数形式一致。

新窗口 阅读全文及评论...

[ 一线风 | 2007-7-11 9:55:54 | 阅读: 1562 | 分类: C#/.Net ]
简介
序列化是指将对象实例的状态存储到存储媒体的过程。在此过程中,先将对象的公共字段和私有字段以及类的名称(包括类所在的程序集)转换为字节流,然后再把字节流写入数据流。在随后对对象进行反序列化时,将创建出与原对象完全相同的副本。

在面向对象的环境中实现序列化机制时,必须在易用性和灵活性之间进行一些权衡。只要您对此过程有足够的控制能力,就可以使该过程在很大程度上自动进行。例如,简单的二进制序列化不能满足需要,或者,由于特定原因需要确定类中那些字段需要序列化。以下各部分将探讨  .NET  框架提供的可靠的序列化机制,并着重介绍使您可以根据需要自定义序列化过程的一些重要功能。

持久存储
我们经常需要将对象的字段值保存到磁盘中,并在以后检索此数据。尽管不使用序列化也能完成这项工作,但这种方法通常很繁琐而且容易出错,并且在需要跟踪对象的层次结构时,会变得越来越复杂。可以想象一下编写包含大量对象的大型业务应用程序的情形,程序员不得不为每一个对象编写代码,以便将字段和属性保存至磁盘以及从磁盘还原这些字段和属性。序列化提供了轻松实现这个目标的快捷方法。

公共语言运行时  (CLR)  管理对象在内存中的分布,.NET  框架则通过使用反射提供自动的序列化机制。对象序列化后,类的名称、程序集以及类实例的所有数据成员均被写入存储媒体中。对象通常用成员变量来存储对其他实例的引用。类序列化后,序列化引擎将跟踪所有已序列化的引用对象,以确保同一对象不被序列化多次。.NET  框架所提供的序列化体系结构可以自动正确处理对象图表和循环引用。对对象图表的唯一要求是,由正在进行序列化的对象所引用的所有对象都必须标记为  Serializable(请参阅基本序列化)。否则,当序列化程序试图序列化未标记的对象时将会出现异常。

当反序列化已序列化的类时,将重新创建该类,并自动还原所有数据成员的值。

新窗口 阅读全文及评论...

[ 一线风 | 2007-7-11 9:34:32 | 阅读: 1122 | 分类: C#/.Net ]
这是c#2.0语言的新特性,具体的细节可以参看C#  language  spec。Nullable类型用于给简单值类型对象赋null值或者某个未知值。这在数据库操作中很常见,当然也会在别的地方有应用。

        过去,我们也可以通过其他途径完成我们的需求:

        1.使用支持装箱的类型。这样我们不能用强类型,同时要用堆来安排每种类型。

        2.把值类型包成class。这是个强类型,但也要用到堆,同时你必须要写这样的一个包裹类。

        3.包成一个结构体,同时提供对赋空的支持。这是个好的解决方案,但你也得自己写。

        为使得使用起来更简单,在VS2005,我们介绍一种新的类型名为“Nullable”,如下:

新窗口 阅读全文及评论...

[ 一线风 | 2007-7-10 10:37:40 | 阅读: 1057 | 分类: C#/.Net ]
随着C#语言最新标准的出炉,现在它也提供了对可空类型的支持。这个小变化将会在处理那些包括可选项的数据库记录时非常有用。当然在其他地方,它也是非常有用的。

  简单说来,可空数据类型就是包含了所定义的数据类型或者值的空(null)的类型。C#的ECMA-334标准提供了对所有C#值类型的可空版本的描述。 

  定义可空类型

  定义可空类型和非可空类型基本类似,不同的是采用了?来表示。如定义一个整型,你可以使用简单的语句:

int  myInt  =  1; 

  为了使得myInt能够存储一个空值,你可以这样声明它:

新窗口 阅读全文及评论...

[ 一线风 | 2007-6-25 9:49:19 | 阅读: 1339 | 分类: C#/.Net ]
简介
本文为您提供了在  Microsoft  ADO.NET  应用程序中实现和获得最佳性能、可伸缩性以及功能的最佳解决方案;同时也讲述了使用  ADO.NET  中可用对象的最佳实践;并提出一些有助于优化  ADO.NET  应用程序设计的建议。

本文包含: 

•  有关  .NET  框架包含的  .NET  框架数据提供程序的信息。
 
•  DataSet  和  DataReader  之间的比较,以及这些对象中每个对象最佳用法的解释。 
 
•  解释如何使用  DataSet、Commands  和  Connections。 
 

新窗口 阅读全文及评论...

[ 一线风 | 2007-6-18 17:43:57 | 阅读: 1698 | 分类: C#/.Net ]
调试快捷键

F6:  生成解决方案
Ctrl+F6:  生成当前项目
F7:  查看代码
Shift+F7:  查看窗体设计器
F5:  启动调试
Ctrl+F5:  开始执行(不调试)
Shift+F5:  停止调试
Ctrl+Shift+F5:  重启调试
F9:  切换断点
Ctrl+F9:  启用/停止断点
Ctrl+Shift+F9:  删除全部断点
F10:  逐过程
Ctrl+F10:  运行到光标处
F11:  逐语句

编辑快捷键

Shift+Alt+Enter:  切换全屏编辑

Ctrl+B,T  /  Ctrl+K,K:  切换书签开关
Ctrl+B,N  /  Ctrl+K,N:  移动到下一书签
Ctrl+B,P:  移动到上一书签
Ctrl+B,C:  清除全部标签

Ctrl+I:  渐进式搜索
Ctrl+Shift+I:  反向渐进式搜索
Ctrl+F:  查找
Ctrl+Shift+F:  在文件中查找
F3:  查找下一个
Shift+F3:  查找上一个
Ctrl+H:  替换
Ctrl+Shift+H:  在文件中替换
Alt+F12:  查找符号(列出所有查找结果)

Ctrl+Shift+V:  剪贴板循环

Ctrl+左右箭头键:  一次可以移动一个单词
Ctrl+上下箭头键:  滚动代码屏幕,但不移动光标位置。
Ctrl+Shift+L:  删除当前行
Ctrl+M,M:  隐藏或展开当前嵌套的折叠状态
Ctrl+M,L:  将所有过程设置为相同的隐藏或展开状态
Ctrl+M,P:  停止大纲显示
Ctrl+E,S:  查看空白
Ctrl+E,W:  自动换行
Ctrl+G:  转到指定行
Shift+Alt+箭头键:  选择矩形文本
Alt+鼠标左按钮:  选择矩形文本

Ctrl+Shift+U:  全部变为大写
Ctrl+U:  全部变为小写

代码快捷键

Ctrl+J  /  Ctrl+K,L:  列出成员
Ctrl+Shift+空格键  /  Ctrl+K,P:  参数信息
Ctrl+K,I:  快速信息

Ctrl+E,C  /  Ctrl+K,C:  注释选定内容
Ctrl+E,U  /  Ctrl+K,U:  取消选定注释内容

Ctrl+K,M:  生成方法存根
Ctrl+K,X:  插入代码段
Ctrl+K,S:  插入外侧代码

F12:  转到所调用过程或变量的定义

窗口快捷键

Ctrl+W,W:  浏览器窗口
Ctrl+W,S:  解决方案管理器
Ctrl+W,C:  类视图
Ctrl+W,E:  错误列表
Ctrl+W,O:  输出视图
Ctrl+W,P:  属性窗口
Ctrl+W,T:  任务列表
Ctrl+W,X:  工具箱
Ctrl+W,B:  书签窗口
Ctrl+W,U:  文档大纲

Ctrl+D,B:  断点窗口
Ctrl+D,I:  即时窗口

Ctrl+Tab:  活动窗体切换

Ctrl+Shift+N:  新建项目
Ctrl+Shift+O:  打开项目
Ctrl+Shift+S:  全部保存
Shift+Alt+C:  新建类
Ctrl+Shift+A:  新建项


3、  变量.ToString() 
字符型转换  转为字符串 
12345.ToString("n");  //生成  12,345.00 
12345.ToString("C");  //生成  ¥12,345.00 
12345.ToString("e");  //生成  1.234500e+004 
12345.ToString("f4");  //生成  12345.0000 
12345.ToString("x");  //生成  3039  (16进制) 
12345.ToString("p");  //生成  1,234,500.00%

1.9  取中文日期显示——年月日时分 
string  strY=currentTime.ToString("f");  //不显示秒 

1.10  取中文日期显示_年月 
string  strYM=currentTime.ToString("y"); 

1.11  取中文日期显示_月日 
string  strMD=currentTime.ToString("m"); 

1.12  取中文年月日 
string  strYMD=currentTime.ToString("D"); 

1.13  取当前时分,格式为:14:24 
string  strT=currentTime.ToString("t"); 

1.14  取当前时间,格式为:2003-09-23T14:46:48 
string  strT=currentTime.ToString("s"); 

1.15  取当前时间,格式为:2003-09-23  14:48:30Z 
string  strT=currentTime.ToString("u"); 

1.16  取当前时间,格式为:2003-09-23  14:48 
string  strT=currentTime.ToString("g"); 

1.17  取当前时间,格式为:Tue,  23  Sep  2003  14:52:40  GMT 
string  strT=currentTime.ToString("r"); 

1.18获得当前时间  n  天后的日期时间 
DateTime  newDay  =  DateTime.Now.AddDays(100); 


字串变量.Replace("子字串","替换为") 
字串替换 
如: 
string  str="中国"; 
str=str.Replace("国","央");  //将国字换为央字 
Response.Write(str);  //输出结果为“中央”

新窗口 阅读全文及评论...

[ 一线风 | 2007-6-15 17:40:17 | 阅读: 2855 | 分类: C#/.Net ]

1.  Bin文件夹

 

Bin文件夹包含应用程序所需的,用于控件、组件或者需要引用的任何其他代码的可部署程序集。该目录中存在的任何.dll文  件将自动地链接到应用程序。如果在该文件夹中留有不用的或过期的文件,则可能出现“二义性引用(ambiguous  reference)”异常的风险。换句话说,如果两个不同的程序集定义相同的类(相同的命名空间和名称),则ASP.NET运行库不能决定应该使用哪一  个程序集,从而抛出一个异常。在开发时,当我们重新命名一个项目或一个程序集的名称时,这是常见的错误。为了避免这种错误,一定不要在该文件夹中保留任何  不必要的程序集,或者至少要从配置文件的<assemblies>节中删除如下代码行:

<add  assembly="*"  />

在表1.10所列的所有文件夹中,只有Bin可以被ASP.NET  1.x应用程序识别。该文件夹是强制性的。

2.  App_Browser文件夹

该可选的文件夹包含.browser文件。.browser文件描述浏览器(不管是移动设备浏览器,还是台式机浏览器)的特  征和功能。ASP.NET在安装路径下的Config\Browser文件夹中安装了大量.browser文件,这些文件供所有应用程序共享。我们只是把  当前应用程序特有的浏览器文件放在App_Browser文件夹下。.browser文件的内容即时动态地进行编译,以便向ASP.NET运行库提供最新  的浏览器信息。

新窗口 阅读全文及评论...

[ 一线风 | 2007-6-15 17:22:46 | 阅读: 1321 | 分类: C#/.Net ]
1.自定义异常处理

//自定义异常处理类 
using  System;
using  System.Diagnostics;

namespace  MyAppException
{
 ///  <summary>
 ///  从系统异常类ApplicationException继承的应用程序异常处理类。
 ///  自动将异常内容记录到Windows  NT/2000的应用程序日志

新窗口 阅读全文及评论...

[ 一线风 | 2007-6-15 17:13:19 | 阅读: 983 | 分类: C#/.Net ]
在网站开发时,生成缩略图是一个非常常见和实用的功能.以前在asp里只能借助com组件实现,现在在.net里可以利用框架的强大的类库轻松实现.下面帖出完整的代码(带详细注释)。

///  <summary>
///  生成缩略图
///  </summary>
///  <param  name="originalImagePath">源图路径(物理路径)</param>
///  <param  name="thumbnailPath">缩略图路径(物理路径)</param>
///  <param  name="width">缩略图宽度</param>
///  <param  name="height">缩略图高度</param>
///  <param  name="mode">生成缩略图的方式</param> 
public  static  void  MakeThumbnail(string  originalImagePath,  string  thumbnailPath,  int  width,  int  height,  string  mode)

新窗口 阅读全文及评论...