随笔 - 71, 文章 - 0, 评论 - 387, 引用 - 16
数据加载中……

c-sharp开发应避免的几点滥用

一 String和StringBuilder
        
      少量的字符串操作不宜采用StringBuilder。
      由于string是不可变得对象,对于string的叠加,每次操作都会生成一个新的string对象。所以针对大量string的操作时,我们会采用StringBuilde。但似乎很多人都知道这一点,所以只要字符串相加,不管三七二一都用StringBuilder。其实这是个误区,在这里要注意"大量"一词,少量的字符串操作用StringBuilder反而得不偿失。
    比如下面的两种写法:

string sql = "insert into table (,,,)";
sql 
+= " values ('')";

StringBuilder sb = new StringBuilder();
sb.Append(
"insert into table (,,,)");
sb.Append(
" values ('')");
string s = sb.ToString();
宜采取第一种写法。因为只有两个字符串的相加,谈不上大量。如果用StringBuilder,最后还需要转换成string,结果性能反而差一些。

二 慎用异常

      由于程序抛出一个异常,就会创建一个异常对象,然后应用程序会在Catch块中捕获该异常,造成性能影响非常大。
比如:
int OrderID;
try
{
      OrderID = Convert.ToInt32(this.txtOrderID.Text);

}

catch(Exception e)
{
      OrderID 
= .
}

这样的代码很不合适,造成的性能开销非常大。应该在客户端写js代码先去验证txtOrderID是否符合要求。


三 关于Session, Request

Session:
很多人喜欢用Session来保存持久对象的值。 但是当你的程序部署在多台服务器上做负载均衡时,可能会得不到Session保存的变量的值。 另外,由于Session是服务器端的内建对象,每开启一个Session对象,都在服务器上占用一些资源。

Request:
在页面间传值取值时,看到很多人都这么写代码:
string CustomerName = this.Request["txtCustomerName"].ToString();
其实后面的ToSTring()多此一举。this.Request["...."]本来就是string类型的,不必再去ToString()一下。


今天就写那么多吧,要还有其他问题,再补充。


 

posted on 2006-08-04 19:09 Ring 阅读(830) 评论(6)  编辑 收藏 所属分类: B .Net 开发

评论

#1楼   回复  引用  查看    

不错! 学习一下先!
2006-08-04 16:45 | cyclone      

#2楼   回复  引用  查看    

很不错的总结
都是平时需要注意到的
我曾看到有人用Session滥用来保存只在当前页面有效的信息
2006-08-04 19:58 | aspnetx      

#3楼   回复  引用    

"但是当你的程序部署在多台服务器上做负载均衡时,可能会得不到Session保存的变量的值。"
不过用Session Server还是可以解决的!
2006-08-05 07:12 | ipqn[未注册用户]

#4楼   回复  引用    

this.Request["txtCustomerName"].ToString();
有可能会出错,因为Request也会返回null
2006-08-05 08:51 | Edwin Liu[未注册用户]

#5楼[楼主]   回复  引用  查看    

@ipqn
@Edwin Liu
多谢补充.
在多台服务器上做负载均衡时,此外一定安装负责用一用户开启的会话定向到同一台机器上的软件也可以.
这个软件具体叫什么名字,可以查查.

如果在s.ToString()时, s的值有可能是Null,那么建议用Convert.ToString(s);
这种情况在取数据库表中的某个字段值时常有可能出现.
2006-08-05 20:41 | Ring      

#6楼   回复  引用    

确实有见解
2006-08-17 16:45 | 日本人[未注册用户]



发表评论

昵称: [登录] [注册]

主页:

邮箱:(仅博主可见)

评论内容:

  登录  注册

[使用Ctrl+Enter键快速提交评论]

0 436612




相关文章:

相关链接: