문제

나는 다음과 같은 일을하려고 노력하고 있습니다.

public class MySuperCoolClass<T>
{
    public T? myMaybeNullField {get; set;}
}

이게 가능해?

이것은 나에게 오류를 준다 :

오류 CS0453 : 유형 T' must be a non-nullable value type in order to use it as type parameter일반 유형 또는 메소드 시스템에서 t '.

감사

도움이 되었습니까?

해결책

추가하다 where T : struct 이후 오류를 제거하기위한 일반적인 제약 Nullable<T> 만 허용합니다 struct.

public class MySuperCoolClass<T> where T : struct
{
    public T? myMaybeNullField { get; set; }
}

Nullable<T> 아래와 같이 정의됩니다

public struct Nullable<T> where T : struct

그래서 당신은 또한 당신이하는 것을 막기 위해 그렇게해야합니다. MySuperCoolClass<object> 그것이 만든다 object? 유효하지 않습니다.

다른 팁

당신은 당신의 직업이 보입니까?

public static Nullable<T> ToNullable<T>(this string s) where T: struct
{
    Nullable<T> result = new Nullable<T>();
    try
    {
        if (!string.IsNullOrEmpty(s) && s.Trim().Length > 0)
        {
            TypeConverter conv = TypeDescriptor.GetConverter(typeof(T));
            result = (T)conv.ConvertFrom(s);
        }
    }
    catch { } 
    return result;
}
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top