C#报错:CS0236:字段设定项初始值无法引用非静态字段、方法或属性xxx

出现原因

找了个雪花算法的静态代码,以项目中的命名方式重写为不静态的。看着确实好像是洗稿抄袭了,确实也没的辩。但其实每个网上找来的代码都会重写一遍,不然根本不理解,出现问题也改不了。不如ctrl + c,v的时候就一步到位。
把代码中的静态全取消后就出现了这个问题。

问题解析

在类中只能定义属性或变量,不能变量引用变量。

private string para1 = "aa";//可以
private string para2 = "bb";//可以

private string result = para1 + para2;
// 就会报错:字段设定项初始值无法引用非静态字段、方法或属性xxx

// 即使放到构造函数中也不行,也会报错
public SnowFlakeIDService()
{
    private string result = para1 + para2;
}

原因与各种属性的内存的分配顺序有关,没太理解上去,别这么用就行了,非要用就声明为静态吧。
还有一种通过属性获取的方式。但涉及到计算就又不行,所以还是得声明为静态。

posted @ 2022-03-29 16:42  几个酒菜成这样  阅读(2542)  评论(0编辑  收藏  举报