#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