十个Visual Studio与C#编程技巧(下)

原创
开发 后端
本文将介绍10个C#编程和Visual Studio IDE使用技巧,这也是近期我们发布的系列文章的下篇。

【51CTO独家特稿】如果你通过搜索引擎发现这篇文章的,我建议你先看看本系列的***篇,这是本系列文章的第二篇,今天为大家带来更丰富的C#Visual Studio编程技巧,一起来看看吧。

51CTO向您推荐:《10个C#编程和Visual Studio使用技巧

1、DataTable.HasRows

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

<CODE> 
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())  
    {  
      …  
    }  
         </CODE> 
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.

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

2、ToTitleCase 

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

当前的文化

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

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

<CODE> 
public static string ToTitleCase(this string inputString)  
               {  
                  return Thread.CurrentThread.CurrentCulture.TextInfo.  
ToTitleCase((inputString ?? string.Empty).ToLower());  
       }  
          </CODE> 
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.

3、显性和隐性接口实现

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

<CODE> 
    
     INTERFACE  
  public interface IMyInterface   
  {  
     void MyMethod(string myString);  
  }  
    
      CLASS THAT IMPLEMENTS THE INTERFACE IMPLICITLY  
  public MyImplicitClass: IMyInterface  
  {  
     public void MyMethod(string myString)  
     {  
      ///  
     }  
  }  
    
   CLASS THAT IMPLEMENTS THE INTERFACE EXPLICITLY  
  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("");  
    
  </CODE> 
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.

4、Auto属性

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

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

<CODE> 
    private double _total;  
  public double Total   
  {  
   get { return _total; }  
      set { _total = value; }  
  }  
    </CODE> 
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.

就变成了

<CODE> 
public double Total { get; set; }  
    </CODE> 
  • 1.
  • 2.
  • 3.

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

5、强大的Path.Combine

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

Path.Combine方法

图 1 Path.Combine方法

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

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

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

可覆写方法列表

图 2 可覆写方法列表

7、使用扩展的配置文件

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

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

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

<connectionStrings configSource="configs\ development.config" /> 
  • 1.

你还可以在AppSettings设置小节使用这个有用的属性。

8、克服String.Split方法的局限

String.Split是分隔字符串最理想的方法,但据我们所知,它也有一些限制,如不能使用“||”或“::”这样的字符,必须使用键盘上***的单个字符作为分隔符,这个缺点可以使用RegEx库提供的Split方法来克服掉,下面的代码显示了使用RegEx Split分隔一个“||”分隔字符串。

<CODE>  
string delimitedString = "String.Split || RegEx.Split");  
string[] ouputString   = System.Text.RegularExpressions.Regex.Split(  
     delimitedString,   
     , System.Text.RegularExpressions.Regex.Escape("||"));  
  </CODE> 
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.

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

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

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

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

虽然数据表支持Find和Select方法选择行,但它们都没有DataView的方法好用,DataView提供了一个FindRows方法,它可以使用排序列上创建的索引,因此速度更快。
希望这些技巧可以帮助你节省宝贵的编程时间,赶快去试试吧!

原文标题:10 More C# Programming and Microsoft Visual Studio Tips and Tricks

 

 

 

【编辑推荐】 

  1. Visual Studio自定义调整窗体的两个小技巧
  2. Visual Studio 2010中关于C#的几点改进
  3. Visual Studio 2010及.Net 4新功能一览
  4. 提高效率 用好Visual Studio 2010自定义代码段
责任编辑:彭凡 来源: 51CTO
相关推荐

2010-09-28 08:52:00

C#Visual Stud

2024-01-30 00:40:10

2009-12-16 15:44:20

Visual Stud

2010-11-30 09:06:28

Visual Stud

2022-07-30 23:35:49

软件开发代码编辑器Web

2010-08-18 09:55:38

IE6

2009-12-16 14:51:27

Visual Stud

2012-04-05 09:33:18

Visual Stud

2024-01-06 18:02:18

编程记录日志

2024-02-04 17:21:37

C++编程开发

2010-09-08 14:35:22

CSS

2024-12-03 14:33:42

Python递归编程

2022-11-07 16:06:15

TypeScript开发技巧

2011-08-22 12:24:56

nagios

2020-07-09 15:10:20

开发技能代码

2019-09-27 08:00:00

Visual StudVisual Stud开发技巧

2024-11-11 10:00:00

2024-08-30 14:21:04

2025-02-24 10:20:32

2023-04-20 18:45:44

点赞
收藏

51CTO技术栈公众号