全国服务热线 18573546151

万树IT教育:Net开发的两个小技巧

发布:2017-09-14 11:14,更新:2010-01-01 00:00

这篇文章为大家带来一些在net开发过程中所结合出来的小技巧,供大家更好的学习和参考。

 

 一、@符号的妙用

 

  1、可以作为保留关键字的标识符

 

  C#规范当中,不允许使用保留关键字(class、bool等)当作普通的标识符来命名,这时候@符号作用就体现

 

  出来了,可以通过@符号前缀把这些保留关键字可以当作普通的字符使用。

 

  比如:

 

  string@class="hello";//是正确的

 

  stringclass="hello";//报错

 

  2、@符号可以表示跨行字符串

 

  比如:

 

  stringstr=@"hello

 

  world

 

   !";//这样写是正确的

 

  3、字符串转义字符

 

  很多时候程序中出现目录的时候会有“\”,字符表示转义字符,要表示普通字符的时候需要写成“\\”,当这样字符过多的时候写起来不是很简洁,这时候可以使用@字符。

 

  比如:

 

  stringpath="d:\\Data\\web\\ss.txt";//一般写法

 

  stringpath=@"d:\Data\web\ss.txt";//使用@符号

 

  二、using的用法

 

  1、using指令

 

  用来引入命名空间,比如:usingSystem;

 

  2、为命名空间或类型创建别名

 

  using引入命名空间,并不等于编译器编译时加载该命名空间所在的程序集,程序集的加载决定于程序中对该程序集是否存在调用操作,

 

  如果代码中不存在任何调用操作则编译器将不会加载using引入命名空间所在程序集。

 

  创建别名的另一个重要的原因在于同一文件中引入的不同命名空间中包括了相同名称的类型,

 

  例如SharpMap.Geometries.Point与System.Drawing.Point。为了避免出现名称冲突,可以通过设定别名来解决:

 

  usingSGPoint=SharpMap.Geometries.Point;

 

  usingSDPoint=System.Drawing.Point;

 

  尽管我们可以通过类型全名称来加以区分,但是这显然不是的解决方案。用using指令创建别名,

 

  有效的解决了这种可能的命名冲突,才是的解决方案。

 

  3、using语句

 

  using语句允许程序员指定使用资源的对象应当何时释放资源。using语句中使用的对象必须实现IDisposable接口。

 

  IDisposable接口提供了Dispose方法,该方法将释放此对象的资源。

 

  例如:

 

  using(TextReaderreader=newStreamReader(filename))

 

  {

 

  stringline;

 

  whil((line=read.ReadLine())!=null)

 

  {

 

  Console.WriteLine(line);

 

  }

 

  }

 

  等价于以下形式:

 

  {

 

  TextReaderreader=newStreamReader(filename);

 

  try

 

  {

 

  stringline;

 

  while((line=read.ReadLine())!=null)

 

  {

 

  Console.WriteLine(line);

 

  }

 

  }

 

  finally

 

  {

 

  if(reader!=null)

 

  {

 

  (IDisposible)reader.Dispose();

 

  }

 

  }

 

  }

 

  4、使用规则

 

  1、using只能用于实现了IDisposable接口的类型,禁止为不支持IDisposable接口的类型使用using语句,否则会出现编译错误;

 

  2、using语句适用于清理单个非托管资源的情况,而多个非托管对象的清理以try-finnaly来实现,

 

  因为嵌套的using语句可能存在隐藏的Bug。内层using块引发异常时,将不能释放外层using块的对象资源;

 

  3、using语句支持初始化多个变量,但前提是这些变量的类型必须相同,例如:

 

  using(Penp1=newPen(Brushes.Black),p2=newPen(Brushes.Blue))

 

  {

 

  //todo

 

  }

 

  4、针对初始化对个不同类型的变量时,可以都声明为IDisposable类型,例如:

 

  using(IDisposablefont=newFont("Verdana",12),pen=newPen(Brushes.Black))

 

  {

 

  floatsize=(fontasFont).Size;

 

  Brushbrush=(penasPen).Brush;

 

  }


联系方式

  • 地址:长沙 麓谷企业广场
  • 电话:0731-8823-4000
  • 联系人:刘浩
  • 手机:18573546151
  • QQ:807752949
  • Email:807752949@qq.com