Почему я не могу разрешить неявно?

#c# #implicit

#c# #неявный

Вопрос:

Я всегда щелкаю правой кнопкой мыши, чтобы разрешить пространство имен неявно.

Но для некоторого пространства имен я не могу разрешить его неявно и должен разрешить его явно, что приводит к коду, подобному program1.logging .ErrorLogger.Возникает ошибка. Почему я не могу разрешить неявно?

Комментарии:

1. Это потому, что существует класс из другого пространства имен с тем же именем, поэтому вам нужно четко указать, что вы хотите. Таким образом, есть хороший шанс, что есть еще один класс с именем ErrorArise с его пространством имен, определенным в usings .

2. покажите немного кода, я уверен, что смогу помочь

Ответ №1:

Проверьте эту скрипку: https://dotnetfiddle.net/6Px9BQ

Проблема в том, что существует два или более классов с одинаковым именем, поэтому неявно невозможно узнать, на который вы ссылаетесь, поэтому вам нужно указать имя явно, указав его полное имя пространства имен.

Если вы не хотите постоянно указывать длинные квалификаторы, вы можете сократить их следующим образом:

 Apple.Berry.Cheese.Cake cake = new Apple.Berry.Cheese.Cake();
  

сокращенный:

 using abc = Apple.Berry.Cheese;

abc.Cake cake = new abc.Cake();
  

Ответ №2:

Visual studio дает вам много возможностей и может легко позволить вам перейти к некоторым концепциям. Одним из предоставляемых инструментов является то, что вы можете щелкнуть правой кнопкой мыши, чтобы добавить директиву using в верхней части файла кода, которая сигнализирует компилятору, какие имена классов будут означать во время компиляции.

Но если два пространства имен имеют одинаковое имя класса, и оба используются в одном классе, тогда вы должны явно указывать компилятору в каждом случае, что использовать.