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