private string? typeOfContract
{
get { return (string?)ViewState["typeOfContract"]; }
set { ViewState["typeOfContract"] = value; }
}
Позже в коде я использую это так:
typeOfContract = Request.QueryString["type"];
Я получаю следующую ошибку при объявлении typeOfContract
строки:
Тип 'string' должен быть типом значения, не допускающим значения NULL, чтобы использовать его в качестве параметра 'T' в универсальном типе или методе 'System.Nullable <T>'
Любые идеи? По сути, я хочу убедиться, что он "type"
существует в QueryString
перед выполнением действия.
string?
чтобы сказать миру, что эта строка может быть нулевой. Ссылка: youtube.com/watch?v=VdC0aoa7ungВы усложняете это.
string
уже допускает значение NULL. Вам не нужно делать его более допускающим значение NULL. Выньте?
на тип недвижимости.источник
string не может быть параметром Nullable, поскольку строка не является типом значения. Строка - это ссылочный тип.
string s = null;
является очень допустимым утверждением, и нет необходимости делать его допускающим значение NULL.
private string typeOfContract { get { return ViewState["typeOfContract"] as string; } set { ViewState["typeOfContract"] = value; } }
должен работать из-за ключевого слова as .
источник
String - это ссылочный тип, поэтому вам не нужно (и нельзя) использовать
Nullable<T>
здесь. Просто объявите typeOfContract как строку и просто проверьте значение null после получения его из строки запроса. Или используйте String.IsNullOrEmpty, если вы хотите обрабатывать пустые строковые значения так же, как null.источник
Для значений NULL используйте
?
со всеми примитивами C # , кроме строки.На следующей странице представлен список примитивов C # : http://msdn.microsoft.com/en-us/library/aa711900(v=vs.71).aspx
источник
Обратите внимание, что в следующей версии C # 8, ответы неверны.
All the reference types are non-nullable by default
и вы действительно можете сделать следующее:public string? MyNullableString; this.MyNullableString = null; //Valid
Однако,
public string MyNonNullableString; this.MyNonNullableString = null; //Not Valid and you'll receive compiler warning.
Здесь важно показать цель вашего кода. Если «намерение» состоит в том, что ссылочный тип может иметь значение NULL, отметьте его, иначе присвоение значения NULL для значения, не допускающего значения NULL, приведет к предупреждению компилятора.
Больше информации
Модератору, который удаляет все ответы, не делайте этого. Я твердо верю, что этот ответ добавляет ценности, а удаление просто помешает кому-то узнать, что в данный момент является правильным. Поскольку вы удалили все ответы, я повторно отправляю ответ здесь. Ссылка, которая была отправлена относительно «дубликатов», является просто открытием некоторых людей, и я не думаю, что это официальная рекомендация.
источник