operator - string null c#
El tipo ''cadena'' debe ser un tipo no anulable para usarlo como parámetro T en el tipo genérico o método ''System.Nullable<T>'' (4)
Por una razón muy específica, escriba Nullable<int>
coloque el cursor sobre Nullable y presione F12 - La metadata proporciona la razón (Observe la restricción struct):
public struct Nullable<T> where T : struct
{
...
}
¿Por qué aparece el error "El tipo ''cadena'' debe ser un tipo de valor que no admite nulos para usarlo como parámetro ''T'' en el tipo genérico o método ''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; }
}
}
}
System.String ya puede contener nulos: no es necesario que lo declare como tal (string? MyStr) es incorrecto.
Use string
lugar de string?
en todos los lugares en tu código.
El tipo Nullable<T>
requiere que T sea un tipo de valor que no Nullable<T>
, por ejemplo int
o DateTime
. Los tipos de referencia como string
ya pueden ser nulos. No tendría sentido permitir cosas como Nullable<string>
por lo que no está permitido.
Además, si usa C # 3.0 o posterior, puede simplificar su código mediante el uso de propiedades implementadas automáticamente :
public class WordAndMeaning
{
public string Word { get; set; }
public string Meaning { get; set; }
}
string
es un tipo de referencia, una clase. Solo puedes usar Nullable<T>
o el T?
Azúcar sintáctico C # con tipos de valor que no admiten nulos, como int
y Guid
.
En particular, como una string
es un tipo de referencia, una expresión de tipo string
ya puede ser nula:
string lookMaNoText = null;