2012-05-17 2 views
-1

У меня есть один вопрос ..Что более точно в смысле производительности

Какой у вас более эффективный результат? Или, что меньше времени для выполнения и Почему?

session["var"].ToString() 

или

(string)session["var"] 
+0

Какой тип 'session [" var "]'? Также я никогда не видел '(string) var' раньше, когда-либо. Может быть, я просто пропустил это? –

ответ

0

ToString() - это метод и (строка) выполняет кастинг (Явный). Литье IMO всегда быстрое

Операция литья между ссылочными типами не изменяет время выполнения типа базового объекта; он изменяет только тип значения , который используется в качестве ссылки на этот объект.
Источник: Explicit Conversions

.ToString() может быть вызван из любого объекта. Этот метод унаследован от класса объекта и может быть перегружен.

. (Строка) - это литой, его не вызов функции. Его следует использовать, когда он уверен, что объект уже находится в строке, он будет генерировать исключение, если он не может преобразовать в строку, включая нуль.

0

В зависимости от типа объекта на этой сессии ВДП, если вы знаете, что это строка, вариант 2 лучше.

+0

Спасибо за ваш ответ .... но можете ли вы сказать мне, почему второй вариант лучше? Является ли оно явным преобразованием или неявным преобразованием? – jitendra

0

Последний работает лучше, просто отливая значение другого типа. Первый включает вызов метода и/или создание нового объекта.

0

Эти 2 вызова выполняют очень разные действия (если вы точно не знаете, что это значение является строкой). Так что спрашивать, какой из них быстрее, не совсем правильно.

Есть аргументы в обоих направлениях, которые будут быстрее, поскольку для обеих операций требуется вызов функции. Правильный подход - прототип и измерение.

Обратите внимание на то, что доступ к данным с сеанса - это ваш основной батл производительности (особенно в случае SQL или другого состояния сеанса вне процесса).

0

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()

Смежные вопросы