C#報錯:CS0236:欄位設定項初始值無法引用非靜態欄位、方法或屬性xxx
阿新 • • 發佈:2022-03-29
出現原因
找了個雪花演算法的靜態程式碼,以專案中的命名方式重寫為不靜態的。看著確實好像是洗稿抄襲了,確實也沒的辯。但其實每個網上找來的程式碼都會重寫一遍,不然根本不理解,出現問題也改不了。不如ctrl + c,v的時候就一步到位。
把程式碼中的靜態全取消後就出現了這個問題。
問題解析
在類中只能定義屬性或變數,不能變數引用變數。
private string para1 = "aa";//可以 private string para2 = "bb";//可以 private string result = para1 + para2; // 就會報錯:欄位設定項初始值無法引用非靜態欄位、方法或屬性xxx // 即使放到建構函式中也不行,也會報錯 public SnowFlakeIDService() { private string result = para1 + para2; }
原因與各種屬性的記憶體的分配順序有關,沒太理解上去,別這麼用就行了,非要用就宣告為靜態吧。
還有一種通過屬性獲取的方式。但涉及到計算就又不行,所以還是得宣告為靜態。