1

我的课堂上有以下代码:

    public string StrLog {get; set;}

然后在同一个类中,我有以下代码:

    private string imgData = StrLog;

我收到以下错误消息:

    A field initializer cannot reference the non-static field, method or property

它有一个问题:

    private string imgData = StrLog;

但不知道如何解决这个问题。

4

3 回答 3

3

基本上,您不能通过使用任何其他类级别值来初始化类级别变量(除非该值是静态的) - 这是您的错误试图告诉您的。

您最好的选择是在构造函数中分配值:

private string imgData = null;

public MyClass()
{
   imgData = "some value";
}

在您的情况下,为它分配值是没有意义的,StrLog因为StrLog一开始就没有值。因此,您也可以将其分配给它null,或者在其他地方分配一个实际值形式(例如我的示例)

于 2012-11-30T16:57:32.933 回答
1

不允许使用非静态成员来初始化成员变量。

您需要首先通过在构造函数中设置它来初始化它。

例如:

imgData = null;

我强烈鼓励你在构造函数中分配一些东西(一些东西可能是空的)。这只是很好的形式。在下面的示例中,您将了解它为何如此重要。如果先执行 get 并且未设置值怎么办?它至少应该包含一个空值。

话虽如此,如果您希望将 imgData 的值填充为面向公众的属性的值,则需要执行以下操作:

public string StrLog
{
   get { return imgData; }
   set { imgData = value; }
}

这会将 StrLog 的值传递给 imgData,您无需进行任何工作。

于 2012-11-30T17:00:41.870 回答
-1

使 imgData 成为您的财产,与 Strlog 相同。然后分配 . 它会起作用的。

于 2012-11-30T17:07:25.910 回答