服务器之家:专注于服务器技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - C# - C#编程和Visual Studio使用技巧(下)

C#编程和Visual Studio使用技巧(下)

2021-10-29 12:24黄永兵 C#

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

如果你通过搜索引擎发现这篇文章的,我建议你先看看本系列的第一篇,这是本系列文章的第二篇,今天为大家带来更丰富的c#和visual studio编程技巧,一起来看看吧。

推荐:《10个c#编程和visual studio使用技巧》(上)

1、datatable.hasrows

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<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>

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

2、totitlecase

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

当前的文化

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

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

?
1
2
3
4
5
6
7
<code>
public static string totitlecase(this string inputstring)
  {
   return thread.currentthread.currentculture.textinfo.
totitlecase((inputstring ?? string.empty).tolower());
 }
  </code>

3、显性和隐性接口实现

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

?
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
<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>

4、auto属性

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

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

?
1
2
3
4
5
6
7
8
<code>
 private double _total;
 public double total
 {
 get { return _total; }
 set { _total = value; }
 }
 </code>

就变成了

?
1
2
3
<code>
public double total { get; set; }
 </code>

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

5、强大的path.combine

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

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

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

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

C#编程和Visual Studio使用技巧(下)

图1  可覆写方法列表

7、使用扩展的配置文件

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

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

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

?
1
<connectionstrings configsource="configs\ development.config" />

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

8、克服string.split方法的局限

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

?
1
2
3
4
5
6
<code>
string delimitedstring = "string.split || regex.split");
string[] ouputstring = system.text.regularexpressions.regex.split(
 delimitedstring,
 , system.text.regularexpressions.regex.escape("||"));
 </code>

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

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

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

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

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

延伸 · 阅读

精彩推荐
  • C#三十分钟快速掌握C# 6.0知识点

    三十分钟快速掌握C# 6.0知识点

    这篇文章主要介绍了C# 6.0的相关知识点,文中介绍的非常详细,通过这篇文字可以让大家在三十分钟内快速的掌握C# 6.0,需要的朋友可以参考借鉴,下面来...

    雨夜潇湘8272021-12-28
  • C#SQLite在C#中的安装与操作技巧

    SQLite在C#中的安装与操作技巧

    SQLite,是一款轻型的数据库,用于本地的数据储存。其优点有很多,下面通过本文给大家介绍SQLite在C#中的安装与操作技巧,感兴趣的的朋友参考下吧...

    蓝曈魅11162022-01-20
  • C#深入理解C#的数组

    深入理解C#的数组

    本篇文章主要介绍了C#的数组,数组是一种数据结构,详细的介绍了数组的声明和访问等,有兴趣的可以了解一下。...

    佳园9492021-12-10
  • C#VS2012 程序打包部署图文详解

    VS2012 程序打包部署图文详解

    VS2012虽然没有集成打包工具,但它为我们提供了下载的端口,需要我们手动安装一个插件InstallShield。网上有很多第三方的打包工具,但为什么偏要使用微软...

    张信秀7712021-12-15
  • C#C#设计模式之Strategy策略模式解决007大破密码危机问题示例

    C#设计模式之Strategy策略模式解决007大破密码危机问题示例

    这篇文章主要介绍了C#设计模式之Strategy策略模式解决007大破密码危机问题,简单描述了策略模式的定义并结合加密解密算法实例分析了C#策略模式的具体使用...

    GhostRider10972022-01-21
  • C#利用C#实现网络爬虫

    利用C#实现网络爬虫

    这篇文章主要介绍了利用C#实现网络爬虫,完整的介绍了C#实现网络爬虫详细过程,感兴趣的小伙伴们可以参考一下...

    C#教程网11852021-11-16
  • C#如何使用C#将Tensorflow训练的.pb文件用在生产环境详解

    如何使用C#将Tensorflow训练的.pb文件用在生产环境详解

    这篇文章主要给大家介绍了关于如何使用C#将Tensorflow训练的.pb文件用在生产环境的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考借鉴...

    bbird201811792022-03-05
  • C#C#微信公众号与订阅号接口开发示例代码

    C#微信公众号与订阅号接口开发示例代码

    这篇文章主要介绍了C#微信公众号与订阅号接口开发示例代码,结合实例形式简单分析了C#针对微信接口的调用与处理技巧,需要的朋友可以参考下...

    smartsmile20127762021-11-25