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()一下。

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

时间: 2024-10-24 09:53:51

c-sharp开发应避免的几个小滥用的相关文章

大伙有了解平安科技的咩?工作三年的java开发应提多少呀?

问题描述 大伙有了解平安科技的咩?工作三年的java开发应提多少呀? 问题补充:深圳的呀. 解决方案 开发工程师 开发工程师工资信息¥6974¥2600-¥23500软件开发工程师 软件开发工程师工资信息¥8003¥4880-¥20000软件工程师 软件工程师工资信息¥9545¥5000-¥24000软件开发 软件开发工资信息¥5370¥4000-¥8000应该看面试的表现了,应该不低. 公司的优点5险一金比较全面,还有补充员工福利保险.过节费,生日消费卡,每年外出旅游.待遇一般是16薪,主要看

SQL开发中容易忽视的一些小地方(一)

做开发三年来(B/S),发现基于web 架构的项目技术主要分两大方面: 第一:C#,它是程序的基础,也可是其它开发语言,没有开发语言也就不存在应用程序. 第二:数据库,现在是信息化世界,大多数信息都可以通过数据库存储来交换信息.常与应用程序互相交流信息. 但在SQL开发应用时,我们往往只观注些常用的方法(insert delete select update),对些小细节方面(系统存储过程,函数的应用,优化分析)研究的并不多或者是知其一不知其二,所以本人想把在学习工作当中遇到的问题总结些,希望还

SQL开发中容易忽视的一些小地方(五)

背景: 索引分类:众所周知,索引分为聚集索引和非聚集索引. 索引优点:加速数据查询. 问题:然而我们真的清楚索引的应用吗?你写的查询语句是否能充分应用上索引,或者说你如何设计你的索引让它更高效? 经历:以前本人只知道索引的好处,但是是否能够真正让它发挥作用,并无太多理论,为些本人做了些DEMO,来简单说明下什么情况下才能充分利用索引. 案例: 这里建立一个学生表:有如下字段,此时表中没有建立任何索引.CREATE TABLE [dbo].[student]( [ID] [int] IDENTIT

SQL开发中容易忽视的一些小地方(四)

非聚集索引结构:1:非聚集索引与聚集索引具有相同的 B 树结构,它们之间的显著差别在于以下两点: * 基础表的数据行不按非聚集键的顺序排序和存储. * 非聚集索引的叶层是由索引页而不是由数据页组成. 2:非聚集索引行中的行定位器或是指向行的指针,或是行的聚集索引键,如下所述: * 如果表是堆(意味着该表没有聚集索引),则行定位器是指向行的指针.该指针由文件标识符 (ID).页码和页上的行数生成.整个指针称为行 ID (RID). * 如果表有聚集索引或索引视图上有聚集索引,则行定位器是行的聚集索

SQL开发中容易忽视的一些小地方(三)

索引定义:微软的SQL SERVER提供了两种索引:聚集索引(clustered index,也称聚类索引.簇集索引)和非聚集索引(nonclustered index,也称非聚类索引.非簇集索引). SARG的定义:用于限制搜索的一个操作,因为它通常是指一个特定的匹配,一个值得范围内的匹配或者两个以上条件的AND连接.形式如下: 列名 操作符 <常数 或 变量>或<常数 或 变量> 操作符列名列名可以出现在操作符的一边,而常数或变量出现在操作符的另一边. SARG的意义:如果一个

SQL开发中容易忽视的一些小地方(二)

目的:继上一篇:SQL开发中容易忽视的一些小地方(一) 总结SQL中的null用法后,本文我将说说表联接查询. 为了说明问题,我创建了两个表,分别是学生信息表(student),班级表(classInfo).相关字段说明本人以SQL创建脚本说明: 测试环境:SQL2005 CREATE TABLE [dbo].[student]( [ID] [int] IDENTITY(1,1) NOT NULL, [sUserName] [nchar](10) COLLATE Chinese_PRC_CI_A

PHP网站开发中常用的8个小技巧

 这篇文章主要介绍了PHP网站开发中常用的8个小技巧,本文讲解了命名.使用.PHP判断Form表单是否提交.PHP 获取字符串长度.PHP超全局对象等内容,需要的朋友可以参考下     PHP是一种用于创建动态WEB页面的服务端脚本语言.如同ASP和ColdFusion,用户可以混合使用PHP和HTML编写WEB页面,当访 问者浏览到该页面时,服务端会首先对页面中的PHP命令进行处理,然后把处理后的结果连同HTML内容一起传送到访问端的浏览器.但是与ASP或 ColdFusion不同,PHP是一

用安卓中jython包开发了获取教务处课表的小程序,出错为NoClassDefFoundError

问题描述 用安卓中jython包开发了获取教务处课表的小程序,出错为NoClassDefFoundError 代码如下:public class CourseScrawler { public static int[][] getCourseArray(String stuID, String pwd) { PythonInterpreter interp = new PythonInterpreter(); interp.execfile("src/course-scrawler.py&quo

PHP网站开发中常用的8个小技巧_php实例

PHP是一种用于创建动态WEB页面的服务端脚本语言.如同ASP和ColdFusion,用户可以混合使用PHP和HTML编写WEB页面,当访 问者浏览到该页面时,服务端会首先对页面中的PHP命令进行处理,然后把处理后的结果连同HTML内容一起传送到访问端的浏览器.但是与ASP或 ColdFusion不同,PHP是一种源代码开放程序,拥有很好的跨平台兼容性.用户可以在Windows NT系统以及许多版本的Unix系统上运行PHP,而且可以将PHP作为Apache服务器的内置模块或CGI程序运行. 本