Проблема новичка: проблемы с созданием нового метода void. C#

#c#

#c#

Вопрос:

Я пытаюсь создать метод в новом классе, который я создал…

 public void CalcDrinks(bool HealthOption) 
{
    if (HealthOption)
    {
        CostOfBeverage = 5M; 
    }
    else
    {
        CostOfBeverage = 20M; 
    }
}
  

И я продолжаю получать красную загогулину под надписью void… «ожидаемая ошибка класса, делегата, перечисления, интерфейса или структуры»

Я не уверен, чего мне не хватает…

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

1. Убедитесь, что объявление вашего метода находится в блоке класса. Найдите в своем файле public class ... строку и поместите метод в фигурные скобки, которые следуют за этой строкой, а затем посмотрите, исчезнет ли ошибка.

2. В приведенном выше коде нет ничего плохого в изоляции. Возможно, вы можете опубликовать весь свой файл исходного кода (если в нем не слишком много строк), поскольку ошибка, вероятно, является внешней по отношению к этому методу.

3. Мне кажется, что вы пытаетесь определить метод вне класса … проверьте свои фигурные скобки.

4. Можем ли мы увидеть остальную часть файла? Похоже, это может быть контекстуальной проблемой.

5. Это сообщение об ошибке означает, что вы объявляете свой метод вне объявления класса. Итак, либо вы пытаетесь объявить его в глобальном пространстве имен, либо вы допустили ошибку при написании своего класса. Не могли бы вы опубликовать весь код?

Ответ №1:

Вы получите именно эту ошибку, если метод объявлен вне класса.

 namespace Blah
{
    public void CalcDrinks(bool HealthOption) 
    {
        if (HealthOption)
        {
            CostOfBeverage = 5M; 
        }
        else
        {
            CostOfBeverage = 20M; 
        }
    }
}
  

В этом фрагменте не видно определения класса. Исправьте его на приведенном ниже и убедитесь, что он компилируется.

 public class Foo
{
    private decimal CostOfBeverage;

    public void CalcDrinks(bool HealthOption)
    {
        if (HealthOption)
        {
            CostOfBeverage = 5M;
        }
        else
        {
            CostOfBeverage = 20M;
        }
    }
}
  

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

1. @MonuMan5: пожалуйста, отредактируйте свой исходный вопрос, чтобы добавить свой код, а не один из его ответов.

Ответ №2:

Убедитесь, что метод находится внутри класса, и что метод class / property / other заключен в фигурные скобки до и после метода. Также убедитесь, что в предыдущем операторе есть ; (точка с запятой).

Обычно эта проблема возникает из-за того, что перед методом установлены несоответствующие фигурные скобки или отсутствует точка с запятой:

Правильно

 namespace A
{
    public class AA
    {
        public string B {get; set; }    
        public string C {get; set; }
        public void ShowD()
        {
            DoSomething;
        }

    }
}
  

Неверно

 namespace A
{
    public class AA
    {
        public string B { get; set; }      
        public string C {get; set;    // <--Note missing brace)
        public void ShowD()
        {
            DoSomething;
        }

    }
}
  

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

1. Вау … ага. Я действительно напортачил таким образом. Я думаю, что я влюблен в StackOverflow! Спасибо за помощь. = D

Ответ №3:

В вашем примере отсутствует некоторый код, но, судя по сообщению об ошибке, ваша функция объявлена вне вашего класса. Код вашего метода должен быть вложен в ваш класс.