Visual Studio与C#编程十个实用技巧

发表于:2010-11-19 10:04

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:黄永兵 译    来源:51Testing软件测试网采编

  1、DataTable.HasRows

  它不属于任何框架,但通过扩展方法很容易模仿这样一个方法,它不会消除检查数据表对象是否为空或行数的原始代码,但它可以简化应用程序的代码,下面是一个代码片段:

<CODE>
publicstatic bool HasRows(this DataTable dataTable)              
{  
return dataTable.IsNull() ?
false: (dataTable.Rows.Count>0);              
}          
publicstatic boolIsNull(thisobjecto)              
{                  
return (o
==null);              
}              
Touse:      
If(dataTable.HasRows())    
{        
…      
}          
</CODE>

  其它规则仍然和扩展方法相同。

  2、ToTitleCase

  这个方法可以将每个单词的首字母转换为大写,剩下的字母转换为小写,例如,“look below for a sample”将被转换为“Look Below For A Sample”,TextInfo是System.Globalization命名空间的一部分,但它存在以下问题:

  当前的文化

  如果输入字符串全部是大写

  下面的扩展方法同时考虑了这两个缺陷。

<CODE>
publicstaticstringToTitleCase(thisstringinputString)                
{                    
return Thread.CurrentThread.CurrentCulture.TextInfo.  ToTitleCase((inputString ??
string.Empty).ToLower());        
}            
</CODE>

  3、显性和隐性接口实现

  这很重要吗?是的,非常重要,你知道它们之间的语法差异吗?其实它们存在根本性的区别。类上的隐性接口实现默认是一个公共方法,在类的对象或接口上都可以访问。而类上的显性接口实现默认是一个私有方法,只能通过接口访问,不能通过类的对象访问。下面是示例代码:

<CODE>          
INTERFACE    
publicinterface IMyInterface    
{      
void MyMethod(
stringmyString);  
}            
CLASS THAT IMPLEMENTS THE INTERFACE IMPLICITLY    
publicMyImplicitClass: IMyInterface    
{      
publicvoid MyMethod(stringmyString)      
{      
///      
}    
}        
CLASS THAT IMPLEMENTS THE INTERFACE EXPLICITLY    
publicMyExplicitClass: IMyInterface    
{      
void IMyInterface.MyMethod(
stringmyString)
      
{        
///      
}    
}        
MyImplicitClass instance would work
witheither the classorthe Interface:    
MyImplicitClass myObject
=newMyImplicitClass();    
myObject.MyMethod(
"");    
IMyInterface myObject  
=newMyImplicitClass();    
myObject.MyMethod(
"");    
MyExplicitClass would work only
withthe interface:    //The following line wouldnotwork.    
MyExplicitClass myObject
=newMyExplicitClass();    
myObject.MyMethod(
"");    
//This will work    
IMyInterface myObject
=newMyExplicitClass();    
myObject.MyMethod(
"");        
</CODE>

31/3123>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号