1. 程式人生 > 實用技巧 >C# 欄位初始值無法引用非靜態欄位、方法或屬性( 類內部變數初始化)

C# 欄位初始值無法引用非靜態欄位、方法或屬性( 類內部變數初始化)

問題:欄位初始值設定項無法引用非靜態欄位、方法或屬性的問題

在類中 變數賦值其他變數報錯?

public class TestClass
{
public TestClass()
{
}
public int a=1;
public int b= a;//注意 此處會報錯欄位初始值設定項無法引用非靜態欄位、方法或屬性
}

原因:

C#規定在類內部只能定義屬性或者變數,並初始化,不能直接變數引用變數。

類中宣告的欄位叫法

在類內部使用宣告的欄位 我們可以稱這個欄位為變數

在其他地方例項化類之後 通過類的例項呼叫的欄位 我們可以稱之為該類的屬性

C# 中欄位的初始化先於建構函式。

屬性記憶體和變數記憶體的分配的時間不一樣。

屬性是用的時候分配,變數是在類初始化時候分配。

int b = a; 實力上是int b = this.a

this代表當前類 相當於是在初始化類例項之前就呼叫了類的屬性

因為這時this還沒被初始化,所以編譯會報錯。