反正没事做,把我曾经考虑过的觉得比较有意思的一个东西给大家试试,你只要回答有没有区别就行了,如果你觉得你理解我的意思,先不要写原因,OK?呵呵,就先玩玩嘛程序中用""与string.Empty有没有区别?
用new EventArgs()与EventArgs.Empty有没有区别?(这里的区别不包括书写上的区别----书写肯定有区别嘛:),仅指运行时的区别。)
(格式:1没有2有)
用new EventArgs()与EventArgs.Empty有没有区别?(这里的区别不包括书写上的区别----书写肯定有区别嘛:),仅指运行时的区别。)
(格式:1没有2有)
----------------------------------------
1:有区别。 ""也是一个值,尽管是空值。 string.Empty()这个应该是清空,包括""值。
用new EventArgs()与EventArgs.Empty有没有区别?
----------------------------------------------
2:没区别。这个我拿不太准。以上只是偶的个人看法,偶不是程序员,并且很久没有写过程序了,有什么错误的,不要骂偶。
{
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;
我和yilan505(蓝衣紫痕) 一样
2
应该有区别
new 是一个新的对象
而EventArgs.Empty只是一个方法
2.同意jacobwc(我是一只小小鸟)的观点
strint str = "";与string str = string.Empty; 对str的定义完全等价,都是空字符串.
EventArgs.Empty 的值是EventArgs的只读实例,后者等效于调用 EventArgs 构造函数的结果。
表示空字符串。此字段为只读字段。
[C#]
public static readonly string Empty;
备注
此字段的值为零长度字符串 ""。
2:有区别
new是创建了一个新对象,而EventArgs.Empty是使用已经实例化的对象.
2. 当然有区别, new 不是白写的
2 默认构造器新实例EventArgs 化对象 和一个没有事件数据的事件Empty 的值是 EventArgs 的只读实例,后者等效于调用 EventArgs 构造函数的结果。
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所以,对于只读数据,我们应该尽量使用已经存在的,而不该频繁的去创建。
----楼主
CSDN小助手是一款脱离浏览器也可以访问Csdn论坛的软件
界面:http://blog.csdn.net/Qqwwee_Com/archive/2005/11/05/523395.aspx
下载:http://szlawbook.com/csdnv2
bool bl2 = object.ReferenceEquals(new EventArgs(),EventArgs.Empty); //false
----楼主
----楼主
用一万个“”就创建了一万个对象,相对String.Empty 当然费内存了
所以 建议试用String.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所以,对于只读数据,我们应该尽量使用已经存在的,而不该频繁的去创建。
----楼主