Не удается использовать мое новое поле в другом пространстве имен

#c# #class #namespaces #syntax-error #field

#c# #класс #пространства имен #синтаксическая ошибка #поле

Вопрос:

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

Вот код моего класса, который написан в моем пространстве имен с именем ‘ModeleDeDomaine’:

 namespace ModeleDeDomaine
{
      public class AlgorithmeGestionDesDouelles
      {
        public bool enCours;
        public bool Pasedff;
      }
}
  

Первое поле, ‘enCours’, уже было создано, когда я начал работать над этим кодом. Второе — это то, что я пытаюсь добавить.

Вот выдержка из моего кода в моем пространстве имен ‘IHM’:

 namespace IHM
{
  public MainWindow() {
       if (AlgorithmeGestionDesDouelles.enCours) {
        ...
       }
  }
}
  

У меня нет ошибок при его компиляции, синтаксис кажется правильным.
Но если я напишу то же самое, но с другим полем:

 namespace IHM
{
     public MainWindow() {

           if (AlgorithmeGestionDesDouelles.Pasedff) {
           ...
           }
      }
 }
  

У меня следующая синтаксическая ошибка:

Ошибка CS1061: ‘AlgorithmeGestionDesDouelles’ не содержит определения для ‘Pasedff’, и не удалось найти метод расширения ‘Pasedff’, принимающий первый аргумент типа ‘AlgorithmeGestionDesDouelles’ (вам не хватает директивы using или ссылки на сборку?

Почему я не могу использовать свое поле в этом пространстве имен?

Заранее благодарю вас за все ваши ответы,

Колин

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

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

2. Спасибо, я очистил его, но ошибка сохраняется. Я снова посмотрел, но в проекте нет другого класса с таким же именем, когда я навожу курсор на вызов поля ‘enCours’, он указывает, что он из ModeleDeDomaine

Ответ №1:

Использование AlgorithmeGestionDesDouelles.enCours предполагает, что это статическое поле, на которое можно ссылаться (вызывать) без экземпляра. Это, однако, не следует из приведенного вами примера кода: это поле экземпляра.

Если вы измените добавленное вами поле public static bool Pasedff; , ваш код main должен скомпилироваться. Я не могу сказать, хотите ли вы этого.

Вот некоторая информация о статических классах, которая может быть полезной: https://learn.microsoft.com/en-us/dotnet/csharp/programming-guide/classes-and-structs/static-classes-and-static-class-members