【问题标题】:Writing Nullable value with BinaryWriter [duplicate]使用 BinaryWriter 写入 Nullable 值
【发布时间】:2013-04-19 14:54:20
【问题描述】:

我想使用BinaryWriter 和以下代码将一个可为空的字符串写入文件:

  BinaryWriter writer = new BinaryWriter(st);
  String? s;
  if(s!=null){
        writer.Write(s);
    }

但是会出现这个错误:

类型“string”必须是不可为空的值类型,才能在泛型类型或方法“System.Nullable”中用作参数“T”

我该如何解决这个问题?

【问题讨论】:

标签: c# nullable binarywriter non-nullable


【解决方案1】:

字符串总是可以为空的,你不需要尝试让它可以为空,因为它们不是值类型。只需删除 ?这使得修复它可以为空。

【讨论】:

    【解决方案2】:

    字符串在 C#.NET 中已经可以为空,它们是一种引用类型,周围有句法糖,使它们更易于使用。你不能让一个可以为空的双精度为空,宇宙会崩溃。

    【讨论】:

      【解决方案3】:

      根据MSDN 文档,我们可以看到 Nullable 类型只能与结构一起使用:

      [SerializableAttribute]
      public struct Nullable<T>
      where T : struct
      

      附言另见Constraints on Type Parameters

      【讨论】:

        【解决方案4】:

        String 是一种引用类型。不能为空。
        public struct Nullable&lt;T&gt; where T : struct, new()

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-04-20
          相关资源
          最近更新 更多