C# 欄位初始值無法引用非靜態欄位、方法或屬性( 類內部變數初始化)
阿新 • • 發佈:2020-07-13
問題:欄位初始值設定項無法引用非靜態欄位、方法或屬性的問題
在類中 變數賦值其他變數報錯?
public class TestClass
{
public TestClass()
{
}
public int a=1;
public int b= a;//注意 此處會報錯欄位初始值設定項無法引用非靜態欄位、方法或屬性
}
原因:
C#規定在類內部只能定義屬性或者變數,並初始化,不能直接變數引用變數。
類中宣告的欄位叫法
在類內部使用宣告的欄位 我們可以稱這個欄位為變數
在其他地方例項化類之後 通過類的例項呼叫的欄位 我們可以稱之為該類的屬性
C# 中欄位的初始化先於建構函式。
屬性記憶體和變數記憶體的分配的時間不一樣。
int b = a; 實力上是int b = this.a
this代表當前類 相當於是在初始化類例項之前就呼叫了類的屬性
因為這時this還沒被初始化,所以編譯會報錯。