0

我有一个看起来像这样的代码:

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;
}

但它仍然没有工作

4

2 回答 2

3

这与 using 语句无关。您正在尝试从 Main 调用非静态成员函数,该函数是静态的。你不能这样做,因为'f'是一个实例方法,也就是说,你必须在你的程序类的一个实例上或从你的一个实例中调用它。因此,您需要将函数 f 设为静态。

于 2009-10-30T04:07:58.373 回答
2

f 是一个实例方法,大概在 Program 类中吧?如果从 Main 调用 f,则没有 Program 的实例,因为 Main 是一个静态方法。将 f 更改为静态:

static void f(DC dc, int a) { ... }
于 2009-10-30T04:08:08.933 回答