Кто такие типы?
Компилятор? Да, конечно. Компилятор использует типы, чтобы сделать его более вероятным, чтобы ваша программа правильно работала во время выполнения, гарантируя соответствие типов, вы вызываете фактически существующие методы и передаете им параметры нужного типа. Здесь компилятор проверяет, что вы действительно возвращаете что-то типа IMyType
.
Редактор? Опять же, да. Редактор использует информацию о фоновой компиляции и типе, чтобы помочь вам написать код. Когда вы нажмете .
после _container
, он использует информацию о типе, чтобы сообщить вам, что существует метод Resolve
и какие параметры он принимает.
Вы? Не так много. Мы уже видели, что компилятор гарантирует, что вы вернете что-то типа IMyType
, так почему вы хотите объявить его как этот тип, когда компилятор сможет его обработать и проверить его? Точно так же редактор расскажет вам о методах в контейнере, поэтому почему вы заботитесь о том, является ли это контейнером Unity или каким-либо другим типом контейнера, если вы уже знаете из имени переменной, это какой-то контейнер и из редактор, который имеет метод Resolve
.
Нет проблем с объявлением типов для локальных пользователей, но то, что ReSharper говорит вам, заключается в том, что компилятор может его обработать, поэтому это избыточная информация и что ваш код может быть более ясным с неявными типами и хорошими именами переменных. Например, является ли цель этого кода менее понятной, чем исходный образец?
public static IMyType GetGateWayManager()
{
var container = GetContainer();
var gateWayManager = container.Resolve<IMyType>();
return gateWayManager;
}
Что дает это предупреждение? Это компилятор VS или внешний инструмент, такой как ReSharper? – codeulike
Тот факт, что вы говорите «потерять тип», предполагает, что вы можете получить доступ к документации для «var». Это не означает «вариант». – AakashM
определенно выглядит как предупреждение Resharper ... –