为什么我会得到错误"类型'字符串'必须是不可为空的值类型才能在泛型类型或方法'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; }
}
}
}
Run Code Online (Sandbox Code Playgroud) 我有一个类(由filehelpers使用),当我尝试定义一个可空字符串时,它给出了一个错误:
public String? ItemNum;
Run Code Online (Sandbox Code Playgroud)
错误是:
Error 1 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<T>'
Run Code Online (Sandbox Code Playgroud)
即使使用小写字母也会出现这种情况string,尽管我还没有看到它们之间的区别.
使用其他类型,如int,decimal等是好的:
public decimal? ItemNum;
Run Code Online (Sandbox Code Playgroud)
一些关于网络的一般性讨论关于按字段等定义构造函数,但鉴于其他字段工作正常,字符串有什么特别之处?有一种优雅的方法可以避免它吗?
我需要创建一个可以保存以下类型值的类: int?, decimal?, date, bool? string.
我希望能够这样做:
var x = new MyClass<int?>()
x.Value = null;
x.value = 99;
// or
var y = new MyClass<bool?>();
y.Value = null;
y.Value = true
// and so on
Run Code Online (Sandbox Code Playgroud)
我一直试图创建一个类型为T的类:
public class TestClass<T>
{
public T? Value{ get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我想使用Value来获取任何允许的类型,但我不能使T为空.错误是:
只有非可空值类型才能成为Sysytem.Nullable的基础
无论如何都在做我想要实现的目标?
查看以下代码块:
//Declaring nullable variables.
//Valid for int, char, long...
Nullable<int> _intVar;
Nullable<char> _charVar;
//trying to declare nullable string/object variables
//gives compile time error.
Nullable<string> _stringVar;
Nullable<object> _objVar;
Run Code Online (Sandbox Code Playgroud)
编译代码编译器时会出现以下错误消息:
类型'string'/'object'必须是非可空值类型,以便在泛型类型或方法'System.Nullable'中将其用作参数'T'
我读过好几次但仍然无法理解.任何人都可以澄清这个吗?为什么object或string不支持可空引用类型?