#c#
Вопрос:
Рассмотрите typeof
вызовы встроенных типов, например:
if (myType == typeof(int) || myType == typeof(long)) { //...
Оцениваются ли эти typeof
вызовы каждый раз, или во время выполнения есть кэш для таких вещей?
Можно было бы иметь static
переменные для таких значений, чтобы гарантировать, что оценка выполняется только один раз, но мне любопытно, делает ли это уже среда выполнения.
Комментарии:
1. я бы просто использовал typeof(длинный). МетадатаТокен и назначьте его статическому полю только для чтения, чтобы сопоставителю не приходилось каждый раз его вычислять.
2. Они, конечно, не кэшируются во время компиляции.
typeof
выражения не являются постоянными выражениями. Хотя я не знаю, что происходит во время выполнения. Дрожание, вероятно, могло бы что-то с этим сделать.3. возможно, можно использовать универсальный тип, чтобы избежать этого . но, возможно, вам нужно изменить свой дизайн .
4. @TimChang Это скорее теоретический вопрос, я хотел бы знать, что делает среда выполнения.
5. Ладно, я понял. github.com/microsoft/referencesource/blob/master/mscorlib/… может быть, вы можете увидеть исходный код типа. Я благодарю, что это не кэш.