if ((Session["UserName"] != null && Session["LoginType"] == "Admin") || (Session["UserName"] != null && Session["LoginType"] == "Employee"))
{
TotalMarketBalance();
}
ответ
Я предлагаю изменить if
-statement к этому:
if (Session["UserName"] != null &&
(Session["LoginType"] as string == "Admin" ||
Session["LoginType"] as string == "Employee")
)
Session[string key]
возвращает object
. И если вы сравниваете object
с чем-то, используя ==
, вы делаете сравнение ссылок. И строковый литерал (например, "Admin"
) никогда не будет иметь такую же ссылку, как этот объект, даже если этот объект - это строка.
Отбрасывая object
в string
, компилятор знает, что он должен вызывать методы равенства string
, которые сравнивают содержимое строки, а не их ссылки.
Конечно, вы можете сделать прямой перевод ((string)Session["LoginType"]
) или позвонить по телефону ToString()
. Но первый будет генерировать исключение, если (по какой-то странной причине) объект возврата не строка. Второй будет бросать NullReferenceException
, если (по какой-то странной причине) значение по-прежнему null
.
Изменение Session["LoginType"]
в Session["LoginType"].ToString()
вы также можете бросить в строку:
(string)Session["LoginType"] == "Admin"
Это как пример делается в документации Reading Values From Session State
FYI, эта ссылка применима к VS2003 и гласит: «Документ архивирован и информация здесь может быть устаревшей». Хотя это правильно и действительно, пожалуйста, не связывайтесь с документами, которые не являются текущими. – ChrisBint
Session ["UserName"]! = Null = true, но (строка) Session ["LoginType"]. ToString() == "Employee") не показывает true или false –
- 1. Возможное непреднамеренное сравнение ссылок; чтобы получить сравнение значений, приложите левую сторону к типу 'string'
- 2. Получение ошибки: возможно непреднамеренное сравнение ссылок; чтобы получить сравнение значений, бросьте левую сторону, чтобы напечатать «string»
- 3. Предупреждение Возможное непреднамеренное сравнение ссылок; чтобы получить сравнение значений, бросьте левую сторону, чтобы напечатать «string»
- 4. Сравнение Предупреждение против NullreferenceException
- 5. Ошибка: возможное непреднамеренное сравнение ссылок, чтобы получить сравнение значений с правой рукой
- 6. C# Возможные непреднамеренное ссылки сравнение
- 7. Ссылка в параметре sql
- 8. Возможное непреднамеренная ссылка сравнения в выпадающем списке
- 9. Предупреждение как ошибка: возможное непреднамеренное сопоставление ссылок при обновлении с .Net 3.5 до .Net 4.5
- 10. C# Строка Сравнение
- 11. строка Сравнение
- 12. Сравнение по типу Haskell
- 13. Пользовательская строка Сравнение в C#
- 14. Что означает сравнение ссылок и сравнение значений?
- 15. Сравнение ViewController к типу в быстрой
- 16. Сравнение значения метки в C#
- 17. Сравнение ссылок в Java
- 18. C# строка «сходство» сравнение тест
- 19. Python bool сравнение vs строка сравнение
- 20. C++ строка и строка буквальное сравнение
- 21. Строка Манипуляция Сравнение
- 22. .NET C# строка оператора сравнения сравнение против enum сравнение
- 23. F # Сравнение шаблонов по типу
- 24. Возможная непредвиденная проблема сравнения ссылок
- 25. C# file path строка сравнение регистр нечувствительность
- 26. excel строка сравнение выпуск
- 27. Case Sensitive Строка Сравнение
- 28. Сравнение значения gson JsonObject с java Строка
- 29. . Строка сравнение строк с сортировкой
- 30. Строка Сравнение версий
Session [ "UserName"] = нуль = верно, но (Session [ "LoginType" ] как строка == «Администратор» || Сессия ["LoginType"] как строка == «Сотрудник») не показывает true или false –
@ Dayanand Почему бы и нет? Что еще это будет показывать? Вы попробовали? –
ya. работает правильно. но когда я держу указатель мыши на знаке == во время отладки. он не показывает true или false. почему ... –