1

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

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

但发生此错误:

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

我怎么解决这个问题?

4

4 回答 4

4

字符串始终可以为空,您无需尝试使其可为空,因为它们不是值类型。只需删除 ? 这使得修复它可以为空。

于 2013-04-19T14:56:30.653 回答
2

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

于 2013-04-19T14:57:12.277 回答
2

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

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

ps 另请参阅类型参数的约束

于 2013-04-19T14:58:00.790 回答
1

字符串是引用类型。它不能为空。
public struct Nullable<T> where T : struct, new()

于 2013-04-19T14:56:06.860 回答