簡體   English   中英

asp.net c# - 字段初始值設定項不能引用非靜態字段,方法或屬性

[英]asp.net c# - A field initializer cannot reference the non-static field, method or property

我班上有以下代碼:

    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;

但不知道如何解決這個問題。

基本上,您不能使用任何其他類級別值初始化類級別變量(除非該值是靜態的) - 這是您的錯誤試圖告訴您的。

您最好的選擇是在構造函數中分配值:

private string imgData = null;

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

在你的情況下,沒有必要為它分配StrLog的值,因為StrLog沒有值開始。 所以你也可以把它分配給null ,或者在其他地方分配一個實際的值(比如我的例子)

您不能使用非靜態memeber初始化成員變量。

您需要首先通過在構造函數中設置它來初始化它。

例如:

imgData = null;

我強烈建議你在構造函數中指定一些東西 (可能是null)。 這只是一種好形式。 在下面的示例中,您將了解它為何如此重要。 如果首先執行get並且未設置值,該怎么辦? 它應該至少包含一個空值。

話雖如此,如果您希望使用面向公眾的屬性的值填充imgData的值,則需要執行以下操作:

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

這會將StrLog的值傳遞給imgData,而您無需任何工作。

以與Strlog相同的方式使imgData成為您的屬性。 然后分配。 它會工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM