首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >类型“string”必须是不可为must的类型,才能将其用作泛型类型或方法“System.Nullable<T>”中的参数T

类型“string”必须是不可为must的类型,才能将其用作泛型类型或方法“System.Nullable<T>”中的参数T
EN

Stack Overflow用户
提问于 2012-02-11 07:51:46
回答 3查看 149.9K关注 0票数 177

为什么我得到错误“类型‘字符串’必须是一个不可为空的值类型,以便将它用作泛型类型或方法‘System.Nullable’中的参数'T‘”?

代码语言:javascript
复制
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; }
      }
    }
}
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-02-11 07:53:00

在代码中的所有位置使用string而不是string?

Nullable<T>类型要求T是不可为空的值类型,例如intDateTime。像string这样的引用类型可能已经是空的。允许像Nullable<string>这样的东西是没有意义的,所以它是不被允许的。

此外,如果您使用的是C# 3.0或更高版本,则可以使用auto-implemented properties来简化代码

代码语言:javascript
复制
public class WordAndMeaning
{
    public string Word { get; set; }
    public string Meaning { get; set; }
}
票数 211
EN

Stack Overflow用户

发布于 2015-08-27 21:29:35

System.String (大写为S)已经可以为空,您不需要这样声明它。

(string? myStr)错了。

票数 15
EN

Stack Overflow用户

发布于 2012-02-11 08:03:25

出于一个非常具体的原因,将光标放在Nullable<int>上并点击F12 -元数据提供了原因(请注意结构约束):

代码语言:javascript
复制
public struct Nullable<T> where T : struct
{
...
}

http://msdn.microsoft.com/en-us/library/d5x73970.aspx

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9236468

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档