本文介绍了类型'字符串'必须是为了在泛型类型或方法来使用它作为参数T为非可空类型“System.Nullable< T>'的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

为什么我收到错误的类型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;'的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

09-03 05:21