Member 14157091 Ответов: 1

C# требуется ссылка на объект проблема


в своей основной программе я пытаюсь использовать
stack.createStack(40);


в классе стека у меня есть эта функция
public void createStack(object value)
       {
           stack S = new stack();
           head = new Node();
           head.Cont = value;
           size++;


       }


Я просто пытаюсь создать функцию конструктора, которая создаст новый стек, стек, определенный следующим образом
<pre>public List<int> stacklist;
        public class Node
        {
            public object Cont;
            public Node Next;

        }
        public Node head;

        public stack()
        {
            head = null;
        }
        public stack(object value)
        {
            head = new Node();
            head.Cont = value;

        }

Я получаю ошибку:
Error	CS0120	An object reference is required for the non-static field, method, or property 'stack.createStack(object)'	Lists	


Что я уже пробовал:

Я понятия не имею, что делать дальше или как этого избежать

Richard Deeming

То createStack метод создает новый stack например, и выбрасывает его. Затем он создает новый Node например, сохраняет параметр в поле на этом узле, а затем выбрасывает узел. В то время как инкременты a size переменная, которая здесь не показана.

Вы также используете camelCasing для типов и методов, которые идут вразрез рекомендации по именованию[^]. Типы, свойства и методы следует использовать PascalCasing; вы должны использовать только camelCasing для параметров.

В сочетании с вашей путаницей по поводу статических членов и членов экземпляра это говорит о том, что вам, вероятно, будет полезно просмотреть некоторые вводные учебные пособия. Например:
Введение в C# - интерактивные учебные пособия | Microsoft Docs[^]

1 Ответов

Рейтинг:
6

Mehdi Gholam

Попробуйте добавить static подобный этому :

public static void createStack(object value)
{
    stack S = new stack();
    head = new Node();
    head.Cont = value;
    size++;
}

или используя свой класс следующим образом, если static это не то, что вам нужно, и ваш класс имеет состояние :
var s = new stack();
s.createStack(40);


Member 14157091

Большое вам спасибо, это сработало :)