Ответ 1
System.String является ссылочным типом и уже "обнуляется".
Nullable <T> и? суффикс для типов значений, таких как Int32, Double, DateTime и т.д.
private string? typeOfContract
{
get { return (string?)ViewState["typeOfContract"]; }
set { ViewState["typeOfContract"] = value; }
}
Позже в коде я использую его следующим образом:
typeOfContract = Request.QueryString["type"];
Я получаю следующую ошибку при объявлении строки typeOfContract
:
Тип 'string' должен быть невообразимым типом значения, чтобы использовать это как параметр "Т" в общем типе или методе 'System.Nullable < Т > '
Любые идеи? В принципе, я хочу убедиться, что "type"
существует в QueryString
перед выполнением действия.
System.String является ссылочным типом и уже "обнуляется".
Nullable <T> и? суффикс для типов значений, таких как Int32, Double, DateTime и т.д.
Вы делаете это сложным. string
уже имеет значение NULL. Вам не нужно указывать значение больше. Выньте ?
в свойстве свойства.
не может быть параметром Nullable, потому что строка не является типом значения. Строка является ссылочным типом.
string s = null;
- очень действительный оператор, и нет необходимости делать его допустимым.
private string typeOfContract
{
get { return ViewState["typeOfContract"] as string; }
set { ViewState["typeOfContract"] = value; }
}
должен работать из-за ключевого слова как.
Строка является ссылочным типом, поэтому вам не нужно (и не может) использовать Nullable<T>
здесь. Просто объявите typeOfContract как строку и просто проверьте значение null после получения его из строки запроса. Или используйте String.IsNullOrEmpty, если вы хотите обрабатывать пустые строковые значения так же, как null.
Для обнуления используйте ?
со всеми примитивами С#, за исключением строки.
На следующей странице приведен список примитивов С#: http://msdn.microsoft.com/en-us/library/aa711900(v=vs.71).aspx