这些是基础的东西了,.net sdk上有了啊

解决方案 »

  1.   

    sealed请参见
    C# 关键字 | 修饰符
    密封类不能被继承。将密封类用作基类是错误的。在类声明中使用 sealed 修饰符可防止继承此类。不允许将 abstract 修饰符用于密封类。结构是隐式密封的;因此它们不能被继承。示例
    // cs_sealed_keyword.cs
    // Sealed classes
    using System;
    sealed class MyClass 
    {
       public int x; 
       public int y;
    }class MainClass 
    {
       public static void Main() 
       {
          MyClass mC = new MyClass(); 
          mC.x = 110;
          mC.y = 150;
          Console.WriteLine("x = {0}, y = {1}", mC.x, mC.y); 
       }
    }
    输出
    x = 110, y = 150
    在前面的示例中,如果试图通过使用下面的语句从密封类继承:class MyDerivedC: MyClass {}   // Error
    将收到错误信息:'MyDerivedC' cannot inherit from sealed class 'MyBaseC'.
      

  2.   

    1.有时有的类是不希望给别人修改的,绝对不希望别人改就用这个.
    2.优势是永远只有一个实例,也不用声明实例,不用实例化,所以稍快点,只合适于单用户环境,多用户环境下比较难于控制冲突,但如果只是存放一些不用改的东西的话,也无所谓了
    3.using 后面加空间名,用处
    比如我不加上using System.Text;的话,那么我声明一个StringBuilder就要这样
    System.Text.StringBuilder sb=new System.Text.StringBuilder("");
    加了的话只要这样
    StringBuilder sb=new StringBuilder("");
    想节约输入什么,你又要用到这个的话你就声明这个吧
      

  3.   

    孟子大哥
    这些我都是查了MSDN才发上来的啊
    比如那个sealed,它就说是避免被继承,那么,为什么要避免继承呢?总得有个理由吧?我想,这些东西应该是需要有一定的实际经验才能了解的。
    小弟现在还是学生,没有什么经验,但是希望能够了解一些更加深入的东西,所以才上来问问你们这些实际经验丰富的大牛们啊,^_^
    希望不吝赐教,^_^
      

  4.   

    2
    用 static 修饰符声明属于类型本身而不是属于特定对象的静态成员。static 修饰符可用于字段、方法、属性、运算符、事件和构造函数,但不能用于索引器、析构函数或类型。备注
    常数或者类型声明隐式地是静态成员。 
    不能通过实例引用静态成员。然而,可以通过类型名称引用它。例如,请考虑以下类: 
    public class MyBaseC 
    {
       public struct MyStruct {
          public static int x = 100;
       }
    }
    若要引用静态成员 x,请使用完全限定名(除非可从相同范围访问): MyBaseC.MyStruct.x
    尽管类的实例包含该类所有实例字段的单独副本,但每个静态字段只有一个副本。 
    不可以使用 this 引用静态方法或属性访问器。 
    注意   static 关键字在使用上比在 C++ 中有更多限制。若要与 C++ 关键字进行比较,请参见 C++ Language Reference 中的 static。
    为了说明实例成员,请看一个表示公司雇员的类。假设该类包含一种对雇员计数的方法和一个存储雇员数的字段。该方法和字段都不属于任何实例雇员,而是属于公司类。因此,应该将它们声明为此类的静态成员。
      

  5.   

    realljx大哥
    这个我知道啊,就是因为它讲得太含糊,我才上来问的啊
      

  6.   

    3.1 using 指令有两个用途: 
    创建命名空间的别名(using 别名)。 
    允许在命名空间中使用类型,例如,不必限定该命名空间中的类型使用(using 指令)。 
    using [alias = ]class_or_namespace;
    其中: 
    alias(可选) 
    希望表示命名空间的用户定义符号。之后,您就可以使用 alias 表示命名空间名。 
    class_or_namespace 
    希望使用或为其提供别名的命名空间名,或希望为其提供别名的类名。 
    备注
    创建 using 别名以便更易于将标识符限定到命名空间或类。
    创建 using 指令,以便在命名空间中使用类型而不必指定命名空间。using 指令不为您提供对可能嵌套在指定命名空间中的任何命名空间的访问。
    命名空间分为两类:用户定义的命名空间和系统定义的命名空间。用户定义的命名空间是在代码中定义的命名空间。有关系统定义的命名空间的列表,请参见 .NET Framework 文档。
    有关其他程序集中的引用方法的示例,请参见创建和使用 C# DLL。
    示例
    下面的示例显示了如何为命名空间定义和使用 using 别名:
    // cs_using_directive.cs
    using MyAlias = MyCompany.Proj.Nested;  // define an alias to represent a namespacenamespace MyCompany.Proj 
    {
       public class MyClass 
       {
          public static void DoNothing() 
          {
          }
       }   namespace Nested   // a nested namespace
       {
          public class ClassInNestedNameSpace 
          {
             public static void SayHello() 
             {
                System.Console.WriteLine("Hello");
             }
          }
       }}public class UnNestedClass 
    {
       public static void Main() 
       {
          MyAlias.ClassInNestedNameSpace.SayHello();   // using alias
       }
    }
    输出
    Hello
    示例
    下面的示例显示了如何为类定义 using 指令和 using 别名:
    // cs_using_directive2.cs
    using System;   // using directive
    using AliasToMyClass = NameSpace1.MyClass;   // using alias for a classnamespace NameSpace1 
    {
       public class MyClass 
       {
          public override string ToString() 
          {
             return "You are in NameSpace1.MyClass";
          }
       }
    }namespace NameSpace2 
    {
       class MyClass 
       {
       }
    }namespace NameSpace3 
    {
       using NameSpace1;   // using directive
       using NameSpace2;   // using directive   class Test 
       {
          public static void Main() 
          {
             AliasToMyClass somevar = new AliasToMyClass();
             Console.WriteLine(somevar);
          }
       }
    }
    输出
    You are in NameSpace1.MyClass3.2
    using 语句定义一个范围,在此范围的末尾将处理对象。
    using (expression | type identifier = initializer) statement
    其中: 
    expression 
    希望在退出 using 语句时调用 Dispose 的表达式。 
    type 
    identifier 的类型。 
    identifier 
    type 类型的名称或标识符。定义一个以上 type 类型的 identifier 是可以的。在每一个 identifier = initializer 的前边都有一个逗号。 
    initializer 
    创建对象的表达式。 
    statement 
    嵌入的语句或要执行的语句。 
    备注
    在 using 语句中创建一个实例,确保退出 using 语句时在对象上调用 Dispose。当到达 using 语句的末尾,或者如果在语句结束之前引发异常并且控制离开语句块,都可以退出 using 语句。
    实例化的对象必须实现 System.IDisposable 接口。
    示例
    // cs_using_statement.cs
    // compile with /reference:System.Drawing.dll
    using System.Drawing;
    class a
    {
       public static void Main()
       {
          using (Font MyFont = new Font("Arial", 10.0f), MyFont2 = new Font("Arial", 10.0f))
          {
             // use MyFont and MyFont2
          }   // compiler will call Dispose on MyFont and MyFont2      Font MyFont3 = new Font("Arial", 10.0f);
          using (MyFont3)
          {
             // use MyFont3
          }   // compiler will call Dispose on MyFont3   }
    }
      

  7.   

    ajqc大哥
    能把1和3再说得详细点吗?
      

  8.   

    呵呵 我帮你贴了MSDN上来 你慢慢瞧吧 一边瞧 一边想想 试试 就出来了。
      

  9.   

    非常感谢realljx大哥
    但是,MSDN上面的东西我都看过了啊
    特别是第一个和第二个问题,MSDN上面太含糊了
    CSDN上面的BLOG很多也是不怎么清楚的
    不过,还是非常感谢您的热心
    ^_^
      

  10.   

    static并非只适合单用户环境,相反,对于在多线程的环境下,如果你的多线程需要访问一个单独的资源,比如一个文件,用static加互斥锁能达到很好的冲突预防。static的另一个好处是保证某些指令只会被执行一遍,或者某些变量只会被实例化一次。
    比如一些初始化的命令,写在静态的构造函数中,可以预防多次被执行。
      

  11.   

    sealed的作用,除了不希望别人继承之外,可能还有一些特别的地方。
    比如String就是一个非常特别的东西,.NetFramework会特别对待他。他是sealed的。
    如果允许从String继承,CLR在处理String的问题上,就非常麻烦了。static的好处就是不需要实例化,就可以调用。这就获得了传统“函数”级别的方便性。
    另外static构造函数还将在该类型的静态成员首次被访问时触发,这也是一种很好的初始化机制。using(IDispable d = new <Class>){
    }
    这个语句块中,自动调用d的Dispose方法。确保资源释放。
      

  12.   

    看 《c# primer 》这本书。
      

  13.   

    呵呵,这些在 .net技术内幕这本书中都有详细的说明。
    sealed防止其他的类来继承的,
    它主要有两个作用,一个是这个类并没有经过认真周密的考虑,继承了可能会有问题所以不允许别人继承或者自己以后再修改
    另外一个就是没有问题但是基于其他原因不允许继承static 修饰符是数据存储属于类型而非对象实例,倒不是说它的运行效率高using可以提高异常的处理效率 至于详细的原因可以看看CLR的运行机制 
    最好是 .net技术内幕
      

  14.   

    如果允许别人继承,那编写出来的dll岂不要给人家用光了?
      

  15.   

    uheart(无为)防止继承并不是为了防止别人继承你得DLL,别人可以编写一个类,每一个方法都去调用的你一个方法,你就没有脾气了。
      

  16.   

    1、很多地方说,不想被别人继承的类用sealed。我更觉得是“不应该被别人继承的类”用sealed,比如,某些类如果被别人继承可能对其他的类造成危害,那么就做成sealed,避免这样的问题出现,而不是为了别人用你的类,毕竟这个不是源代码保护,只是一种OO的方法。2、static不能说是什么优势。“存在即合理”!不是说static快,楼主应从另外一个角度去考虑问题。首先,static在使用的时候只需要建立一次实例(就是第一次访问该类的时候,后面就不需要了),其他的类则在使用时必须实例化。如果是以前的那种面向过程的方法,就只有“静态”(那时候还没有静态的概念吧?^_^),对于OO来说,它有它的用处,实例化的对象呢一般来说是线程安全的,当然还有别的一些好处,但是有的时候我门希望有一些公用的东西(注意,不仅是不变的哦),这个时候,除了那些公用的实例外,还有一个很不错的办法就是static类(或方法),这是OO方法的问题。性能方面,静态的东西可能让那些不需要变化的东西永远在那里,不需要老是实例化,毕竟,执行任何代码都是需要时间的,少了实例化那一步,自然的会快一些,但是呢,又不得不考虑并发访问之类的问题,这些问题处理了之后,说不定它的速度还比不上实例化的方法(比如N个线程争抢一个临界资源,那么你需要控制它们,让他们一个一个的使用该资源,那么其他的线程就只能等,这里虽然没有执行那些代码,但是时间还是浪费了啊)。所以static在OO里面是一种手段,更多的时候用来实现一些功能,而不是来改善性能。JAVA我不懂,但是它的慢倒是见识过的,.NET不同,JIT很不错,那些编译器页做得很不错,所以我建议,尽量不要以为我们对代码的优化能比编译器做得好。3、using语句的最多的用途就是在代码文件中引用namespace
    不过,我倒是很喜欢用来建立sqlconnection之类的东西,原因就是它能够自动的调用对象的Dispose方法。