您的位置:首页 > 编程语言 > C#

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

2013-07-17 21:29 453 查看
如果你通过搜索引擎发现这篇文章的,我建议你先看看本系列的第一篇,这是本系列文章的第二篇,今天为大家带来更丰富的C#和Visual Studio编程技巧,一起来看看吧。
  1、DataTable.HasRows

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

public
static bool HasRows(this DataTable dataTable) {
return dataTable.IsNull()
? false : (dataTable.Rows.Count
> 0); }
public
static bool IsNull(this
object o) {
return (o
== null); }



  To use:      

If(dataTable.HasRows())
{

}

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

  2、ToTitleCase

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

  当前的文化

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

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

public static string ToTitleCase(this string inputString)
{
return Thread.CurrentThread.CurrentCulture.TextInfo.ToTitleCase((inputString ?? string.Empty).ToLower());
}

  3、显性和隐性接口实现

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

public
interface IMyInterface {
void MyMethod(string myString); }
public MyImplicitClass: IMyInterface {
public
void MyMethod(string myString) {
///
} } public MyExplicitClass: IMyInterface {
void IMyInterface.MyMethod(string myString) {
///
} } MyImplicitClass instance would work with either the
class or the Interface: MyImplicitClass myObject
= new MyImplicitClass(); myObject.MyMethod("");
IMyInterface myObject =
new MyImplicitClass(); myObject.MyMethod(""); MyExplicitClass would work only with the
interface:
//The following line would not work.
MyExplicitClass myObject
= new MyExplicitClass(); myObject.MyMethod("");
//This will work
IMyInterface myObject
= new MyExplicitClass(); myObject.MyMethod("");



  4、Auto属性

  它是替换包含一个公共,两个私有成员属性的最好办法。

  按下两次Tab键(需要开启代码片段功能),一个Auto属性就创建好了,再按Tab键Auto属性取一个名字。下面这段代码

private
double _total;
public double Total {
get {
return _total;}
set { _total
= value;} }



  就变成了:

public
double Total {
get; set; }



  注意你仍然可以根据你的设计应用访问说明符,编译器应该会为你创建私有成员变量。

  5、强大的Path.Combine

  Path.Combine凭借强大的功能消除了尾斜线和路径相关的问题,简单易用,让路径字符串更连续,它包含一个字符串路径参数,如图1所示。



  图 1 Path.Combine方法
  你不用担心路径中的有效分隔符或空格,完全不用你处理路径合并时的字符串连接。

  6、在类中编写“Override”方法的快速方法

  在代码编辑器中输入override,按空格键,你将会看到一串基于类的可覆写方法,如图2所示。



  图 2 可覆写方法列表
  7、使用扩展的配置文件

  感谢app.config(针对应用程序)和web.config配置文件,使我们可以处理复杂的应用程序级设置,但是我们仍然要处理不同环境设置面临的各种问题,这里指的是开发、测试和生产环境的设置。

  我们不得不恢复到一个特定的环境以便进行分析、测试或调式部分代码,在这个过程中,每一次设置和调整都很乏味。

  例如,每一次恢复可能都要重新设置ConnectionStrings(连接字符串),现在你可以通过外部文件引用使用ConfigSource属性来解决这个问题。例如,下面的代码引用了一个deveploment.config外部配置文件。

string delimitedString
= "String.Split || RegEx.Split");
string[] ouputString
= System.Text.RegularExpressions.Regex.Split( delimitedString, , System.Text.RegularExpressions.Regex.Escape("||"));



  9、元素的HTML代码视图和设计视图之间的快速切换(反之亦然)

  在设计应用程序时,我们在IDE上花费的时间很多,大部分时间都耗在HTML内容和设计视图上,Visual Studio 2010提供了设计视图和HTML代码之间快速切换的功能。

  如果你在HTML视图中,定位你想在设计视图中查看的元素,然后切换到设计视图,你想查看的元素应该处于选中状态,此外,属性窗口现在也应该显示的是选中元素的属性。

  与此类似,当你在设计视图中,选中元素,然后切换到代码视图,你选中的元素对应的HTML代码应该是高亮状态。

  10、快速搜索数据库中的数据

  虽然数据表支持Find和Select方法选择行,但它们都没有DataView的方法好用,DataView提供了一个FindRows方法,它可以使用排序列上创建的索引,因此速度更快。

  希望这些技巧可以帮助你节省宝贵的编程时间,赶快去试试吧!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: