一、@符号的妙用

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

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

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

比如:

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

string class="hello";   //报错

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

比如:

string str=@"hello

world

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

3、字符串转义字符

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

比如:

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

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

二、using的用法

1、using 指令

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

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

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

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

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

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

using SGPoint = SharpMap.Geometries.Point;

using SDPoint = System.Drawing.Point;

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

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

3、using语句

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

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

例如:

using(TextReader reader=new StreamReader(filename))

{

string line;

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

{

Console.WriteLine(line);

}

}

等价于以下形式:

{

TextReader reader=new StreamReader(filename);

try

{

string line;

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(Pen p1 = new Pen(Brushes.Black), p2 = new Pen(Brushes.Blue))

{

//todo

}

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

using (IDisposable font = new Font("Verdana", 12), pen = new Pen(Brushes.Black))

{

float size = (font as Font).Size;

Brush brush = (pen as Pen).Brush;

}

公众号原文

.Net开发的两个小技巧相关推荐

  1. web开发常用js功能性小技巧(转)

    web开发常用js功能性小技巧 -------------------------------------------------------------------------------- < ...

  2. HTML首字下沉的编码,CSS_有关首行首字下沉的实现原理及代码,下面是两个个小技巧,一个是 - phpStudy...

    有关首行首字下沉的实现原理及代码 下面是两个个小技巧,一个是很多报刊中的首字下沉,其实很简单,原理就是在样式中添加后缀即可.还有一个是对第一行文字进行单独样式.给这段标签添加后缀即可.这两个小技巧分别 ...

  3. iPhone开发中一些使用小技巧

    经过iphone开发,我发现在开发过程中最难的就是一些嘈杂的细节,而了解一些小技巧就会达到事半功倍的效果,下面我就总结一下在iphone开发中的一些小技巧. 1.如果在程序中想对某张图片进行处理的话( ...

  4. ubuntu自定义安装里怎么选_超市里的五香粉怎么选?看懂配料表,两个小技巧,不怕选不好。...

    点击右上角[关注],可获得本头条号推荐的更多美食干货 五香粉是家庭常用的一种调味料,焖.炖.烧.煮.卤都常备使用,如今市场上的五香粉品牌也是相当繁多,质量也是参差不齐,有时买到的五香粉烧制的菜肴根本就 ...

  5. 分享两个小技巧,让你的PPT看起来更高级

    你还在以纯色背景制作PPT?这样制作出来的PPT虽然可能没有差错,但是就很平平无奇吧?今天想跟大家分享两个小技巧,让你的PPT看起来更高级哦. 1.立体图片墙排版 这种排版通过透视围绕布局,营造出立体 ...

  6. 短视频配音的两个小技巧,符合短视频内容基调是关键

    短视频配音的两个小技巧,符合短视频内容基调是关键 相信做短视频的小伙伴们一定发现了,在做短视频的时候,很多时候都会遇到需要配音的情况.有的小伙伴觉得配音只需要随便的配一段就可以了,但是随意的态度却很可 ...

  7. Go开发的两个小应用

    1.猜数游戏 先了解一下生成随机数的方法 import ("fmt""math/rand" )func main() {maxNum := 100secretN ...

  8. 解决任务栏卡死的两个小技巧

    最近WIN10更新之后,今天任务栏突然无故卡死,陷入"假死"状态,即任务栏不能点击,或者点击之后出现读条的圆圈,而桌面上的其他图标可以正常点击的现象.经过网上查阅资料,给出下述两种 ...

  9. 分享让PPT变高级的两个小技巧

    今天想跟大家分享两个小技巧,可以让你制作的PPT看起来更高级哦. 1.优美曲线 制作优美曲线非常简单,下面给大家具体讲述下. 首先,我们选择原始图表中的折线,将线改为平滑线.然后复制一个图表,之后剪切 ...

最新文章

  1. leetcode--最长连续递增序列--python
  2. Elasticsearch 如何做到快速检索 - 倒排索引的秘密
  3. DotNetTextBoxV3.0在线编辑器控件Ver3.4.1 Open Source开源版(附商业试用版下载)
  4. Guid.NewGuid().ToString()的几种格式 (转)
  5. Pandas系列(十五)stack和pivot实现数据透视
  6. 二建 机电工程常用材料及工程设备
  7. mac分区数据恢复|mac分区后数据丢失怎么恢复?
  8. 苹果录屏没声音_不会真有人MacBook录屏没声音吧?别用了SoundFlower了!
  9. 模拟实现strlen
  10. python怎么学比较快,怎样快速学会python
  11. zerglurker的C语言教程010——运算符详解(二)
  12. ts找不到primeng/primeng
  13. 三星云服务S Cloud亮相 与苹果iCloud为敌
  14. Macbook无法开机?如何尝试自救
  15. 影视后期制作画面、声音、效果如何平衡?
  16. 全链路前端性能优化方案
  17. js监听手机屏幕旋转
  18. 数据库那些事--greenDAO增删查改
  19. Blazor 从入门到放弃
  20. 地板保养油对猫咪有坏处吗?

热门文章

  1. GNU gcc的编译工具用法(转)
  2. 与 OpenCV 1 同时使用
  3. Val编程-速度因子
  4. 深入理解面向对象设计的七大原则
  5. C++ STL实现的优先队列( priority_queue )
  6. java如何做全局缓存_传智播客JNI第七讲 – JNI中的全局引用/局部引用/弱全局引用、缓存jfieldID和jmethodID的两种方式...
  7. spss练习数据_SPSS篇——如何在成千上百万个数据中标识重复个案
  8. 从零开始学android编程_android初学者的入门秘籍
  9. 异常:没有找到本地方法库,java.lang.UnsatisfiedLinkError: no trsbean in java.library.path
  10. Python成长之路【第七篇】:Python基础之装饰器