反正没事做,把我曾经考虑过的觉得比较有意思的一个东西给大家试试,你只要回答有没有区别就行了,如果你觉得你理解我的意思,先不要写原因,OK?呵呵,就先玩玩嘛程序中用""与string.Empty有没有区别?
用new EventArgs()与EventArgs.Empty有没有区别?(这里的区别不包括书写上的区别----书写肯定有区别嘛:),仅指运行时的区别。)
(格式:1没有2有)

解决方案 »

  1.   

    程序中用""与string.Empty有没有区别?
    ----------------------------------------
    1:有区别。     ""也是一个值,尽管是空值。 string.Empty()这个应该是清空,包括""值。
    用new EventArgs()与EventArgs.Empty有没有区别?
    ----------------------------------------------
    2:没区别。这个我拿不太准。以上只是偶的个人看法,偶不是程序员,并且很久没有写过程序了,有什么错误的,不要骂偶。
      

  2.   

    Reflector的东西static String()
    {
          string.Empty = "";
          string.WhitespaceChars = new char[] { 
                '\t', '\n', '\v', '\f', '\r', ' ', '\x00a0', '\u2000', '\u2001', '\u2002', '\u2003', '\u2004', '\u2005', '\u2006', '\u2007', '\u2008', 
                '\u2009', '\u200a', '\u200b', '\u3000', '\ufeff'
           };
    }public static readonly string Empty;
    static EventArgs()
    {
          EventArgs.Empty = new EventArgs();
    }
     
    public static readonly EventArgs Empty;
      

  3.   

    1
    我和yilan505(蓝衣紫痕) 一样
    2
    应该有区别
    new 是一个新的对象
    而EventArgs.Empty只是一个方法
      

  4.   

    1.有区别
    2.同意jacobwc(我是一只小小鸟)的观点
      

  5.   

    1. 没区别
    strint str = "";与string str = string.Empty; 对str的定义完全等价,都是空字符串.
      

  6.   

    2.有区别
    EventArgs.Empty 的值是EventArgs的只读实例,后者等效于调用 EventArgs 构造函数的结果。
      

  7.   

    1:没区别
    表示空字符串。此字段为只读字段。
    [C#]
    public static readonly string Empty;
    备注
    此字段的值为零长度字符串 ""。
    2:有区别
     new是创建了一个新对象,而EventArgs.Empty是使用已经实例化的对象.
      

  8.   

    1. 没区别
    2. 当然有区别, new 不是白写的
      

  9.   

    1 没有
    2 默认构造器新实例EventArgs 化对象 和一个没有事件数据的事件Empty 的值是 EventArgs 的只读实例,后者等效于调用 EventArgs 构造函数的结果。
      

  10.   

    我认为没区别。以前也有人问过,所以我用Reflector看过。.NET Framework很多类下面都有该类的常量,这些常量都是给调用者提供一种快捷的调用方式,同时提供一种语言、平台都无关的处理手段。
      

  11.   

    虽然DOTNET有内存回收,但还是应该少用NEW,如果已经提供了String.Empty的常量,我们干什么不用呀。可以提高效率呀
      

  12.   

    公布我的答案,有异议的地方,提出来一起讨论!用Reflector查看,你会发现string.Empty和EventArgs.Empty的定义是:
    static public string Empty = "";
    static public EventArgs Empty = new EventArgs();
    那么可见使用它们与使用""和new EventArgs()在效果上是差不多的,有的只是性能上的差别。EventArgs:现在我假如我在程序里需要使用一万次,假如我一万次都使用new EventArgs(),那么我就构建了一万个EventArgs对象,而如果我使用EventArgs.Empty,我就没有构建新对象。
    string:我在程序里使用一万次""和使用一万次string.Empty有没有区别呢?答案是没有,不仅仅是因为他们等价,而是因为.NET的拘留池(参看MSDN中关于string.Intern方法),"[MSDN]它包含程序中以编程方式声明或创建的每个唯一的字符串的一个引用。因此,具有特定值的字符串的实例在系统中只有一个",由于这个原因,于是""和string.Empty就没有任何区别了,他们将指向同一个对象,而不会构造出新的对象。
    你可以写如下语句测试:
    bool bl1 = object.ReferenceEquals("",string.Empty);   //true
    bool bl2 = object.ReferenceEquals(new EventArgs(),EventArgs.Empty);   //false所以,对于只读数据,我们应该尽量使用已经存在的,而不该频繁的去创建。
                                                 ----楼主
      

  13.   

    肯定有区别====CSDN 小助手 V2.5 2005年11月05日发布====
    CSDN小助手是一款脱离浏览器也可以访问Csdn论坛的软件
    界面:http://blog.csdn.net/Qqwwee_Com/archive/2005/11/05/523395.aspx
    下载:http://szlawbook.com/csdnv2
      

  14.   

    对于stirng这种类型听MSDN网络广播介绍一个C#设计模式时听到过,string类型相同的会重用.比较符合楼主的描述.不错至于另一个有区别的话可否设计一个测试来检验一下..
      

  15.   

    hyena041(ni):哈哈!截止现在,才1077,不容易啊。关键是女朋友现在在路上,正在往我这边来,哪里有心思抢分啊,哈哈!ProjectDD():这两句可以说是一个比较好的测试吧,其实只要思路正确了,不用测也想得到:bool bl1 = object.ReferenceEquals("",string.Empty);   //true
    bool bl2 = object.ReferenceEquals(new EventArgs(),EventArgs.Empty);   //false
                                                      ----楼主
      

  16.   

    Faint!我的答案已经贴出来了,呵呵。看上面署名楼主的。
                                                  ----楼主
      

  17.   

    1、有区别 “”会创建一个对象而String.Empty 不会
       用一万个“”就创建了一万个对象,相对String.Empty 当然费内存了
       所以 建议试用String.Empty
      

  18.   

    第一个,区别应该在于IL,直接使用字符串的IL和使用变量的IL是不同的。
      

  19.   

    公布我的答案,有异议的地方,提出来一起讨论!用Reflector查看,你会发现string.Empty和EventArgs.Empty的定义是:
    static public string Empty = "";
    static public EventArgs Empty = new EventArgs();
    那么可见使用它们与使用""和new EventArgs()在效果上是差不多的,有的只是性能上的差别。EventArgs:现在我假如我在程序里需要使用一万次,假如我一万次都使用new EventArgs(),那么我就构建了一万个EventArgs对象,而如果我使用EventArgs.Empty,我就没有构建新对象。
    string:我在程序里使用一万次""和使用一万次string.Empty有没有区别呢?答案是没有,不仅仅是因为他们等价,而是因为.NET的拘留池(参看MSDN中关于string.Intern方法),"[MSDN]它包含程序中以编程方式声明或创建的每个唯一的字符串的一个引用。因此,具有特定值的字符串的实例在系统中只有一个",由于这个原因,于是""和string.Empty就没有任何区别了,他们将指向同一个对象,而不会构造出新的对象。
    你可以写如下语句测试:
    bool bl1 = object.ReferenceEquals("",string.Empty);   //true
    bool bl2 = object.ReferenceEquals(new EventArgs(),EventArgs.Empty);   //false所以,对于只读数据,我们应该尽量使用已经存在的,而不该频繁的去创建。
                                                 ----楼主