Google [站内搜索]

预览模式: 普通 | 列表

项目设计时不必所有东西设置得非常细

案例:在一个项目中有多种业务类型,业务的各项操作都需记录在日志文件中。开始是每种业务对应一个日志存放目录、一个记录日志的方法,日志文件按天保存。随着业务种类的增多,配置各业务日志存放目录、编写对应日志记录方法就成了一项烦琐的工作。分析下看,将全部业务的操作日志按天放在同一日志文件中对整体并没有多大的影响,只需在每条日志记录中标明下所属业务类型即可,这样工作就变得简单多了。

在项目设计的时候,有些东西我们会犹豫要不要对他进行细分,标准是如果不细分对整个项目并没有太大的影响,那么就可不细分,否则就应细分。
分类:其他 | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 3538

VSS2005添加文件夹的两种方法

VSS2005中可以使用"Add Files..."将本地文件添加到项目中,但VSS2005没有提供将文件夹添加到项目的方法,如要添加文件夹可使用下边两种方法:

a. 在资源管理器中将文件和文件夹拖到VSS2005项目中;
b. 在VS2008中将项目绑定到VSS2005项目再签入;

查看更多...

分类:服务器 | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 5310

索爱K750c联通上网设置

首先联通卡必须开通GPRS上网功能,可联系联通客服开通,接着进行如下设置:

1).依次打开"手机设定→连接→数据通信→数据帐户→添加帐户",按下边设置并保存:

帐户类型:GPRS数据

查看更多...

分类:其他 | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 4485

中国移动和中国联通的上网设置(通用)

中国移动

1 WAP
主页: http://wap.monternet.com
GPRS网关IP地址:10.0.0.172

查看更多...

分类:其他 | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 4071

.NET控件名称缩写一览表

标准控件
1   btn     Button
2   chk     CheckBox
3   ckl     CheckedListBox
4   cmb     ComboBox

查看更多...

分类:Win编程 | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 4250

使用 BackgroundWorker 进行多线程编程

在WinForm开发过程中,如果没有采用多线程编程,经常会出现在执行某个操作时整个界面卡死,无法再做其他操作,而采用多线程编程能很好的解决这个问题,但随之而来的又有线程间控件的操作问题(.NET不允许在创建某控件之外其他线程中操作控件),下边我们用一个例子说明怎么使用BackgroundWorker解决这一系列的问题:

//using System.ComponentModel;
private void Form1_Load(object sender, EventArgs e)
{

查看更多...

分类:Win编程 | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 4894

[私密日志] 私密日志

该日志是私密日志,只有博主或发布者可以查看!
分类:其他 | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 1809
使用#if/#endif 块可以在同样源码上生成不同的编译(结果),大多数debug和release两个版本。但它们决不是我们喜欢用的工具。由于#if/#endif很容易被滥用,使得编写的代码难于理解且更难于调试。程序语言设计者有责任提供更好的工具,用于生成在不同运行环境下的机器代码。C#就提供了条件属性(Conditional attribute)来识别哪些方法可以根据环境设置来判断是否应该被调用。

(译注:属性在C#里有两个单词,一个是property另一个是attribute,它们有不是的意思,但译为中文时一般都是译为了属性。property是指一个对象的性质,也就是Item1里说的属性。而这里的attribute指的是.net为特殊的类,方法或者property附加的属性。可以在MSDN里查找attribute取得更多的帮助,总之要注意:attribute与property的意思是完全不一样的。)

这个方法比条件编译#if/#endif更加清晰明白。编译器可以识别Conditional属性,所以当条件属性被应用时,编译器可以很出色的完成工作。条件属性是在方法上使用的,所以这就使用你必须把不同条件下使用的代码要写到不同的方法里去。当你要为不同的条件生成不同的代码时,请使用条件属性而不是#if/#endif块。

查看更多...

分类:Web编程 | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 4560
C#是一个强数据类型语言。好的编程实践意味着当可以避免从一种数据类型强制转化为另种数据类型时,我们应该尽我们的所能来避免它。但在某些时候,运行时类型检测是不可避免的。在C#里,大多数时候你要为调用函数的参数使用System.Object类型,因为Framwork已经为我们定义了函数的原型。你很可能要试图把那些类型进行向下转化为其它类型的接口或者类。你有两个选择:用as运算符,或者,采用旧式的C风格,强制转换。(不管是哪一种,)你还必须对变量进行保护:你可以试着用is进行转换,然而再用as进行转换或者强制转换。

无论何时,正确的选择是用as运算符进行类型转换。因为比起盲目的强制转换它更安全,而且在运行时效率更高。用as和is运算符进行转换时,并不是对所有的用户定义的类型都能完成的。它们只在运行时类型和目标类型匹配的时候,转换才能成功。它们决不会构造一个新的对象来满足(转化)要求。
看一个例子。你写了一段代码,要转换一个任意类型的对象实例到一个MyType类型的实例。你是这样写代码的:

查看更多...

分类:Web编程 | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 3528
对于常量,C#里有两个不同的版本:运行时常量和编译时常量。
因为他们有不同的表现行为,所以当你使用不当时,将会损伤程序性能或者出现错误。
两害相权取其轻,当我们不得不选择一个的时候,我们宁可选择一个运行慢一点但正确的那一个,而不是运行快一点但有错误的那个。基于这个理由,你应该选择运行时常量而不是编译时常量(译注:这里隐藏的说明了编译时常量效率更高,但可能会有错误)。
编译时常量更快更直接,但在可维护性上远不及运行时常量。保留编译时常量是为了满足那些对性能要求克刻,且随着程序运行时间的过去,其值永远不发生改变的常量使用的(译注:这说明编译时常量是可以不被C#采用的,但考虑到性能问题,还是做了保留)。
你可以用关键字readonly来声明(declare)一个运行时常量,编译时常量是用关键字const声明的。

查看更多...

分类:Web编程 | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 4231