【问题标题】:What's the difference between uppercase Object and lowercase object? [duplicate]大写对象和小写对象有什么区别? [复制]
【发布时间】:2012-07-06 07:53:39
【问题描述】:

可能重复:
c#: difference between “System.Object” and “object”

虽然我目前正在使用 C#,但这个问题可能适用于其他语言。

调用Objectobject 之间有什么区别吗?具体来说,我正在使用构造函数创建Dictionary 的实例:

Dictionary<String, Object> foo = new Dictionary...

IDE 自动填写new Dictionary&lt;string, object&gt;。我回去改变了我最初的声明,但这让我感到疑惑。

  • 当我使用大写StringObject与小写stringobject时,是否有任何不良反应?
  • 我假设大写是指类(因此我可以访问类方法),而小写只是指类型。这是真的吗?

【问题讨论】:

    标签: c# class types


    【解决方案1】:

    有些类具有对象、字符串、int、short 等别名。它们都在内部映射到带有大写字母的 real 类。

    请注意,某些稀有类型取决于平台。例如。在 x86 上是 IntPtr 存储一个 32 位值,而在 x64 上它存储一个 64 位值。

    到目前为止,我知道short 总是映射到 Int16,long 映射到 Int64。

    【讨论】:

    • int 始终是带符号的 32 位整数。 msdn.microsoft.com/en-us/library/exx3b86w.aspx
    • int总是映射到Int32,与平台无关。另一方面,IntPtr 是“特定于平台的整数”,根据平台的不同将是 32 位或 64 位(或其他)。
    • 你说得对,我把它弄混了。
    • @rekire IntPtr 不是别名,也没有映射到任何东西。它是一种独特的类型,其大小取决于平台。
    • 我刚才正在考虑重写这句话。你又是对的^^
    【解决方案2】:

    object 是 System.Object 的关键字(别名),同样适用于string

    编译后会完全一样。

    MSDN page for object 上面写着以下内容:

    对象类型是 .NET Framework 中 System.Object 的别名。 您可以将任何类型的值赋给 object 类型的变量。

    您可以在 MSDN 上找到 C# 中所有关键字的长列表。

    【讨论】:

    • 我知道用Java,我可以使用大写,如Integer,来调用像Integer.parseInt()这样的类方法。如果我假设我可以使用 C# 以 int.parseInt() 之类的方式调用类方法,我是否正确阅读了您的答案?
    • @Yawus,是的,因为它只是“别名”,您可以像使用 System.Int32 一样使用它。 (注意:在 C# 中是 int.Parse("10"))。
    • C# 中的字符串和对象与声明时的对象相同,当您转到 int 和其他“原语”时,请注意了解它们指向的“真实”对象(Int32),所以您不会犯错误,例如认为 int 可以很长,而且大写类 Int32、String 等提供了许多静态方法,这些方法对使用大写表示法“有意义”...
    • @Yawus 在 Java 中 intInteger 是两个不同的东西。一个是原始值类型,另一个是包装它的类。在 C# 中,intSystem.Int32 实际上是同一个东西,完全一样。一个不是另一个的“包装”。
    猜你喜欢
    • 1970-01-01
    • 2020-10-13
    • 2012-01-19
    • 2011-04-27
    • 2019-02-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多