【问题标题】:How to make the default value of a type as Nothing?如何将类型的默认值设为 Nothing?
【发布时间】:2010-12-15 00:27:52
【问题描述】:

例如 Dim aInt as Integer 的值应为空,而不是 0。

【问题讨论】:

  • 在 C# 中,至少你可以将 int value 声明为 int? nullableValue,这允许你将 null 分配给它(默认为 null)。

标签: c# .net vb.net clr types


【解决方案1】:

在 C# 中你需要使用 int 吗?而不是int。整数是值类型,它们不能有空值。

用 int?您可以检查 HasValue 属性以告诉您它不是空值。

int? i = null;

i.HasValue // false;

获取价值使用:

i.Value;

【讨论】:

    【解决方案2】:

    这样做的唯一方法是使用Nullable<T> - 即(在 C# 中):

    int? aInt; // defaults to null
    

    正则整数没有null/Nothing的概念。

    【讨论】:

    • 还要注意在这种情况下你仍然不能做If Not aInt Is Nothing;你必须改用If aInt.HasValue
    • @Dan - 可能不在 VB 中;但在 C# 中,您可以使用 if(aInt!=null) {...}
    • 我很确定你也可以在 VB 中做到这一点;-)
    【解决方案3】:

    您必须使用可为空的类型。在 vb.net - Nullable(Of Integer)(或短字节)

    【讨论】:

      【解决方案4】:

      整数不能是“无”。您需要将其声明为:

      dim aInt as Nullable(of Integer)
      

      【讨论】:

        【解决方案5】:

        如前所述,使用int? / Nullable(of Integer)。但请注意不要过度使用。我正在开发一个项目,其中几乎所有值类型都被声明为可为空/?,这绝对是一团糟。

        【讨论】:

        • 我同意。起初它们来的时候听起来真的很甜,但现在我几乎从不使用它们。所有.HasValue 和所需的类型转换都是一团糟。
        • 过量饮水也很危险你知道吗?一个功能存在,并不意味着你必须在任何地方都使用它。人们说动态不好不是因为它不好,而是人们会不好地使用它。不过没有冒犯的意思。只是我的 2 美分。
        • 我同意 Yogesh 的观点。人们不好使用它们的事实并不意味着它们不好。仅当您需要区分 0 值和空值时才使用它们。
        【解决方案6】:

        其他答案是正确的,您需要使用 Nullable 类型。我想明确 VB/C# 的语法以及支持它的版本:

        VB9+ (Visual Studio 2008):

        Dim aNullableInt As Integer?
        

        VB8+ (Visual Studio 2005):

        Dim aNullableInt As Nullable(Of Integer)
        

        而在 C# 2.0 (Visual Studio 2005) 中,您已经可以用两种方式编写它:

        int? aNullableInt;
        Nullable<int> aNullableInt;
        

        【讨论】:

          猜你喜欢
          • 2017-02-06
          • 2020-07-24
          • 1970-01-01
          • 1970-01-01
          • 2022-12-05
          • 2011-10-22
          • 2021-08-22
          • 2020-03-25
          • 1970-01-01
          相关资源
          最近更新 更多