为什么我得到错误“类型‘字符串’必须是一个不可为空的值类型,以便将它用作泛型类型或方法‘System.Nullable’中的参数'T‘”?
using System;
using System.Collections;
using System.Collections.Generic;
using System.Data;
using System.Diagnostics;
using Universe;
namespace Universe
{
public class clsdictionary
{
private string? m_Word = "";
private string? m_Meaning = "";
string? Word {
get { return m_Word; }
set { m_Word = value; }
}
string? Meaning {
get { return m_Meaning; }
set { m_Meaning = value; }
}
}
}
发布于 2012-02-11 07:53:00
在代码中的所有位置使用string
而不是string?
。
Nullable<T>
类型要求T是不可为空的值类型,例如int
或DateTime
。像string
这样的引用类型可能已经是空的。允许像Nullable<string>
这样的东西是没有意义的,所以它是不被允许的。
此外,如果您使用的是C# 3.0或更高版本,则可以使用auto-implemented properties来简化代码
public class WordAndMeaning
{
public string Word { get; set; }
public string Meaning { get; set; }
}
发布于 2015-08-27 21:29:35
System.String
(大写为S)已经可以为空,您不需要这样声明它。
(string? myStr)
错了。
发布于 2012-02-11 08:03:25
出于一个非常具体的原因,将光标放在Nullable<int>
上并点击F12 -元数据提供了原因(请注意结构约束):
public struct Nullable<T> where T : struct
{
...
}
https://stackoverflow.com/questions/9236468
复制相似问题