using的几种用法

简介:

1.using指令。using + 命名空间名字,这样可以在程序中直接用命令空间中的类型,而不必指定类型的详细命名空间,类似于Java的import,这个功能也是最常用的,几乎每个cs的程序都会用到。
例如:using System; 一般都会出现在*.cs中。

2.using别名。using + 别名 = 包括详细命名空间信息的具体的类型。
这种做法有个好处就是当同一个cs引用了两个不同的命名空间,但两个命名空间都包括了一个相同名字的类型的时候。当需要用到这个类型的时候,就每个地方都要用详细命名空间的办法来区分这些相同名字的类型。而用别名的方法会更简洁,用到哪个类就给哪个类做别名声明就可以了。注意:并不是说两个名字重复,给其中一个用了别名,另外一个就不需要用别名了,如果两个都要使用,则两个都需要用using来定义别名的。

例如:

None.gif using System;
None.gif using aClass = NameSpace1.MyClass;
None.gif using bClass = NameSpace2.MyClass;
None.gif
None.gif namespace NameSpace1 
ExpandedBlockStart.gif {
InBlock.gif    public class MyClass 
ExpandedSubBlockStart.gif    {
InBlock.gif        public override string ToString() 
ExpandedSubBlockStart.gif        {
InBlock.gif            return "You are in NameSpace1.MyClass";
ExpandedSubBlockEnd.gif        }

ExpandedSubBlockEnd.gif    }

ExpandedBlockEnd.gif}

None.gif
None.gif namespace NameSpace2 
ExpandedBlockStart.gif {
InBlock.gif    class MyClass 
ExpandedSubBlockStart.gif    {
InBlock.gif        public override string ToString() 
ExpandedSubBlockStart.gif        {
InBlock.gif            return "You are in NameSpace2.MyClass";
ExpandedSubBlockEnd.gif        }

ExpandedSubBlockEnd.gif    }

ExpandedBlockEnd.gif}

None.gif
None.gif namespace testUsing
ExpandedBlockStart.gif {
InBlock.gif    using NameSpace1;
InBlock.gif    using NameSpace2;
ExpandedSubBlockStart.gif    /// <summary>
InBlock.gif    
/// Class1 的摘要说明。
ExpandedSubBlockEnd.gif    
/// </summary>

InBlock.gif    class Class1
ExpandedSubBlockStart.gif    {
ExpandedSubBlockStart.gif        /// <summary>
InBlock.gif        
/// 应用程序的主入口点。
ExpandedSubBlockEnd.gif        
/// </summary>

InBlock.gif        [STAThread]
InBlock.gif        static void Main(string[] args)
ExpandedSubBlockStart.gif        {
InBlock.gif            //
InBlock.gif            
// TODO: 在此处添加代码以启动应用程序
InBlock.gif            
//
InBlock.gif
            
InBlock.gif            aClass my1 = new aClass();            
InBlock.gif            Console.WriteLine(my1);
InBlock.gif            bClass my2 = new bClass();
InBlock.gif            Console.WriteLine(my2);
InBlock.gif            Console.WriteLine("Press any keydot.gif");
InBlock.gif            Console.Read();
ExpandedSubBlockEnd.gif        }

ExpandedSubBlockEnd.gif    }

ExpandedBlockEnd.gif}

None.gif


3.using语句,定义一个范围,在范围结束时处理对象。
场景:
当在某个代码段中使用了类的实例,而希望无论因为什么原因,只要离开了这个代码段就自动调用这个类实例的Dispose。
要达到这样的目的,用try...catch来捕捉异常也是可以的,但用using也很方便。
例如:

None.gif using (Class1 cls1 =  new Class1(), cls2 =  new Class1())
ExpandedBlockStart.gif {
InBlock.gif  // the code using cls1, cls2
InBlock.gif

InBlock.gif
ExpandedBlockEnd.gif}
  //  call the Dispose on cls1 and cls2
None.gif

None.gif


这里触发cls1和cls2的Dispose条件是到达using语句末尾或者中途引发了异常并且控制离开了语句块。


本文转自风前絮~~博客园博客,原文链接:http://www.cnblogs.com/windsails/archive/2004/09/12/42444.html,如需转载请自行联系原作者

相关文章
|
Java Spring
@ConditionalOnProperty的用法
@ConditionalOnProperty的用法
271 0
mailto用法详解
mailto用法详解
442 0
mailto用法详解
|
存储 SQL Oracle
DatabaseMetaData的用法(转)
DatabaseMetaData的用法(转)
545 0
|
Java
Systrace的用法小结
通过SysTrace可以帮助我们分析性能问题,包含方法的耗时时长、CPU的使用情况、ANR、布局情况等;相比性能工具TraceView,主要用来分析每个方法的执行时间,对于冷启动而言,想抓trace只能通过代码的方式,这样会导致整个应用比较卡顿,测试出的方法时间,不是真正的执行时间,只能看下时间长短的相对占比。
3447 0
|
JavaScript 前端开发 C#