问题描述
为什么我收到错误的类型string必须是一个非空值类型,才能在泛型类型或方法使用它作为参数'T''System.Nullable'?
使用系统;
System.Collections中使用;
使用System.Collections.Generic;
使用System.Data这;
使用System.Diagnostics程序;
使用宇宙;命名空间宇宙
{
公共类clsdictionary
{
私人字符串? m_Word =;
私人字符串? m_Meaning =; 串?字{
{返回m_Word; }
集合{m_Word =价值; }
} 串?含义{
{返回m_Meaning; }
集合{m_Meaning =价值; }
}
}
}
使用字符串
而不是字符串?
中在code的所有地方。
的可空< T>
类型要求T是一个非空值类型,例如 INT
或的DateTime
。引用类型,如字符串
已经可以为null。也就会允许像东西可空&LT没有意义;字符串方式>
,因此是不允许的。
此外,如果你使用的是C#3.0或更高版本可以使用的:
公共类WordAndMeaning
{
公共字符串字{搞定;组; }
公共字符串含义{搞定;组; }
}
Why do I get Error "The type 'string' must be a non-nullable value type in order to use it as parameter 'T' in the generic type or method 'System.Nullable'"?
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; }
}
}
}
Use string
instead of string?
in all places in your code.
The Nullable<T>
type requires that T is a non-nullable value type, for example int
or DateTime
. Reference types like string
can already be null. There would be no point in allowing things like Nullable<string>
so it is disallowed.
Also if you are using C# 3.0 or later you can simplify your code by using auto-implemented properties:
public class WordAndMeaning
{
public string Word { get; set; }
public string Meaning { get; set; }
}
这篇关于类型'字符串'必须是为了在泛型类型或方法来使用它作为参数T为非可空类型“System.Nullable&LT; T&GT;'的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!