【问题标题】:How to pass "using"-type objects to a function?如何将“使用”类型的对象传递给函数?
【发布时间】:2009-10-30 04:05:03
【问题描述】:

我的代码如下所示:

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

但是还是不行

【问题讨论】:

    标签: c# oop static using


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      static void f(DC dc, int a) { ... }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-07-20
        • 2020-12-03
        • 1970-01-01
        • 1970-01-01
        • 2015-02-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多