У меня есть один вопрос ..Что более точно в смысле производительности
Какой у вас более эффективный результат? Или, что меньше времени для выполнения и Почему?
session["var"].ToString()
или
(string)session["var"]
У меня есть один вопрос ..Что более точно в смысле производительности
Какой у вас более эффективный результат? Или, что меньше времени для выполнения и Почему?
session["var"].ToString()
или
(string)session["var"]
ToString() - это метод и (строка) выполняет кастинг (Явный). Литье IMO всегда быстрое
Операция литья между ссылочными типами не изменяет время выполнения типа базового объекта; он изменяет только тип значения , который используется в качестве ссылки на этот объект.
Источник: Explicit Conversions
.ToString() может быть вызван из любого объекта. Этот метод унаследован от класса объекта и может быть перегружен.
. (Строка) - это литой, его не вызов функции. Его следует использовать, когда он уверен, что объект уже находится в строке, он будет генерировать исключение, если он не может преобразовать в строку, включая нуль.
В зависимости от типа объекта на этой сессии ВДП, если вы знаете, что это строка, вариант 2 лучше.
Спасибо за ваш ответ .... но можете ли вы сказать мне, почему второй вариант лучше? Является ли оно явным преобразованием или неявным преобразованием? – jitendra
Последний работает лучше, просто отливая значение другого типа. Первый включает вызов метода и/или создание нового объекта.
Эти 2 вызова выполняют очень разные действия (если вы точно не знаете, что это значение является строкой). Так что спрашивать, какой из них быстрее, не совсем правильно.
Есть аргументы в обоих направлениях, которые будут быстрее, поскольку для обеих операций требуется вызов функции. Правильный подход - прототип и измерение.
Обратите внимание на то, что доступ к данным с сеанса - это ваш основной батл производительности (особенно в случае SQL или другого состояния сеанса вне процесса).
ToString() вызывает исключение, когда объект имеет значение null. Поэтому в случае object.ToString(), если объект имеет значение null, он вызывает исключение NullReferenceException. Convert.ToString() возвращает string.Empty в случае нулевого объекта. (string) cast назначает объект в случае null. Так что в случае
MyObject o = (string)NullObject;
Но когда вы используете O, чтобы получить доступ к любой собственности, это повысит NullReferenceException.
Convert.ToString внутренне использует value.ToString. Кастинг в String дешевле, поскольку для этого не требуется внешний вызов функции, а только проверка внутреннего типа. По крайней мере, в два раза быстрее, чем объект Object to String, чем вызов Object.toString()
Какой тип 'session [" var "]'? Также я никогда не видел '(string) var' раньше, когда-либо. Может быть, я просто пропустил это? –