Как передать объектам типа «использование» функцию?

StackOverflow https://stackoverflow.com/questions/1647957

  •  22-07-2019
  •  | 
  •  

Вопрос

У меня есть код, который выглядит следующим образом:

using (DC dc = new DC())
{
    f(dc.obj, a);
}


void f(DC dc, int a)
{
    ...
    dc.obj = a;
}

Не работает - жалуется на ссылку на объект и нестатические поля. Это консольное приложение, поэтому оно имеет функцию Main (). Как я должен заставить это работать? Я пытался добавить ссылки, как он спросил:

У меня есть код, который выглядит следующим образом:

using (DC dc = new DC())
{
    f(ref dc.obj, a);
}


void f(ref DC dc, int a)
{
    ...
    dc.obj = a;
}

но это все равно не сработало

Это было полезно?

Решение

Это не имеет ничего общего с оператором using. Вы пытаетесь вызвать нестатическую функцию-член из Main, которая является статической. Вы не можете сделать это, потому что 'f' является методом экземпляра, то есть вы должны вызывать его из экземпляра класса вашей Программы или из него. Итак, вам нужно сделать вашу функцию статичной.

Другие советы

f - это метод экземпляра, предположительно в классе Program, верно? Если вы вызываете f из Main, тогда экземпляр Program отсутствует, потому что Main является статическим методом. Измените f на статический:

static void f(DC dc, int a) { ... }
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top