2011-12-02 120 views
0

可能重复对象的集合:
String vs string in C#声明使用对象VS对象

我有一个简单的场景,我网格绑定到对象的集合将存储在一个列表中。我想知道的问题是声明对象列表的最佳做法是什么?

IList<object> myCollection; 

IList<Object> myCollection; 

我读过一些代码标准的文章和很多人建议使用字符串VS字符串,如果同样的规则适用于这里,为什么,所以我想知道?这两种方法(如果有的话)有什么不同,以及以什么样的方式来实现这种方式与其他方式有什么不同。

此网格是自定义控件的一部分,列表作为将绑定到网格的属性公开。

+1

“很多人建议在字符串上使用字符串” - 从我所看到的情况来看,这是迄今为止少数人的观点;大多数人认为IMO是“使用字符串关键字,除了在公共成员名称中” - 即。 “String over String” –

+0

我应该把这个改写成很多以前的同事。谢谢! – jsmith

回答

3

没有什么区别,小写的对象是Object类的别名,为小写的字符串是String类的Int32等别名,INT

以最好的方式已经回答:

String vs string in C#

+6

唯一的区别是使用'object'不需要命名空间引用 - 你不需要使用System;'。这是因为'object'被烘焙到C#解析器本身中,所以它始终被识别。 –

+0

啊,你是对的,很好的电话。 –

5
  • 有没有语义差别。
  • 完全没有性能差异。
  • 两个stringobject是C#语言的关键字,并分别解析为System.StringSystem.Object类。

使用object超过Object理论好处是,你正在降低的基类库的依赖。但是,由于BCL是.NET Framework的核心部分,因此在简单情况下,“优势”就是避免using System;。这种“优势”是恕我直言的争议。

3

两者在运行时没有区别(它们编译为相同的IL)。

唯一的区别是,如果你按shift键并有using System;或没有。

1

在内部它们的处理方式是一样的,所以对性能或功能没有影响,它只是一个偏好问题。我实际上喜欢使用string而不是String,因为字符串的行为不像对象,所以我喜欢它们看起来不同(当然int而不是Int32)。

我无法为自己辩护的奇怪之处在于,我还喜欢使用object,即使对象的行为与对象相同。