【问题标题】:nullable types in c# [duplicate]c#中的可空类型[重复]
【发布时间】:2014-02-05 00:00:02
【问题描述】:

我是 java 初学者,我必须将 java 中的 null 值与 C# 中的 null 值进行比较。

我读到 java 不假定任何内容为 null 并且始终分配内存,但 c# 相反假定所有内容为 null ??? (不明白这是什么意思)

我还读到 c# 中的普通类型不能为空,但后来我看到了一段代码:

int? a = null;

int 是普通类型吧?

我真的很困惑,谁能帮帮我?

提前致谢

【问题讨论】:

  • 整数和整数?不是同一个对象。诠释?是 int 类型的可为空对象

标签: c# java c#-4.0


【解决方案1】:

int 是一个原始结构,是的。 然而,

int?

的语法糖
Nullable<int>

这是一种完全不同的类型。

见:http://msdn.microsoft.com/en-us/library/1t3y8s4s.aspx

【讨论】:

  • 嘿……非常感谢……这是否意味着它们类似于 java 中的泛型?
  • System.Nullable 类是泛型类型,意味着它可以容纳各种其他类型,但泛型的概念并不等同于 System.Nullable 类本身的概念,不。
【解决方案2】:

看看this MSDN article

Nullable 类型是 System.Nullable 结构的实例。可空类型可以表示其基础值类型的正确值范围,以及额外的空值。

class NullableExample
{
    static void Main()
    {
        int? num = null;

        // Is the HasValue property true? 
        if (num.HasValue)
        {
            System.Console.WriteLine("num = " + num.Value);
        }
        else
        {
            System.Console.WriteLine("num = Null");
        }

        // y is set to zero 
        int y = num.GetValueOrDefault();

        // num.Value throws an InvalidOperationException if num.HasValue is false 
        try
        {
            y = num.Value;
        }
        catch (System.InvalidOperationException e)
        {
            System.Console.WriteLine(e.Message);
        }
    }
}

【讨论】:

    【解决方案3】:

    null 在 C# 和 Java 中非常相似。 C# 的structs 不能为空,除了Nullable&lt;T&gt;(它本身是一个struct,但通过一些编译器魔法可以假装有一个null 值)。 Java 的原语不能为空。

    int?Nullable&lt;int&gt; 的简写。有关更多信息,请参阅Nullable Types

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-10-14
      • 1970-01-01
      • 1970-01-01
      • 2021-10-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多