C#变量初始化问题:字段初始值无法引用非静态字段、方法或属性

http://www.cnblogs.com/bluestorm/p/3432190.html

问题:字段初始值设定项无法引用非静态字段、方法或属性的问题

下面代码出错的原因,在类中定义的字段为什么不能用? 
public class Test 
{
public Test()
{
}
public int Age=23;
public int temp = Age;//ERROR 字段初始值设定项无法引用非静态字段、方法或属性
}

C#规定在类内部只能定义属性或者变量,并初始化,不能直接变量引用变量。

在初始化类实例之前就调用了字段

c# 中字段的初始化先于构造函数。

string y = "asdf" + x; 实际上是 y = "asdf" + this.x;

因为这时this还没被初始化,所以编译会报错。

属性内存和变量内存的分配的时间不一样。 
属性是用的时候分配,变量是在类初始化时候分配。

时间: 2024-10-19 09:46:06

C#变量初始化问题:字段初始值无法引用非静态字段、方法或属性的相关文章

C# static 字段初始值设定项无法引用非静态字段、方法或属性

问题:字段或属性的问题字段初始值设定项无法引用非静态字段.方法 下面代码出错的原因,在类中定义的字段为什么不能用? public string text = test(); //提示 字段或属性的问题字段初始值设定项无法引用非静态字段.方法 protected void Page_Load(object sender, EventArgs e) { } public string test() { return ""; } 可以通过属性方式调用: public string text

ERROR无法从静态上下文中引用非静态变量

ERROR无法从静态上下文中引用非静态变量 2012-06-16 20:58:52 分类: Java 什么是“static”? 学习过java.C++或C的人都应该认识这个关键字.用这个关键字修饰的变量叫做静态变量,有其特殊的作用.在java中static也用来修饰静态方法和静态内部类. 静态变量的特点: (1)生存周期:静态局部变量的生存周期也是整个源程序.当定义整个变量的函数结束时,整个变量并没有消失,他始终是存在的. (2)作用域:作用域与自动变量是一样的,只能在定义其的子函数中使用,当退

每日问题之子类字段属性使用父类的非静态字段属性错误

想在子类的字段.属性里调用父类的非静态字段.属性是不可行的,因为字段.属性的初始化是在类的构造函数之前. 比如子类调用父类的字段,需要初始化父类,但是父类没有初始化的时候你调用父类的字段.属性就会出错. class Son: Father { public string sonKey = "son" + base.fatherKye; public void sonMethod() { sonKey = "son" + base.fatherKye; } publi

内部类访问外部类的变量必须是final吗,java静态方法中不能引用非静态变量,静态方法中不能创建内部类的实例

内部类访问外部类的变量必须是final吗? 如下:class A{int i = 3;public void shout(){ class B{public void shout1(){System.out.println(i);} }B b=new B();b.shout1();} public static void main(String [] args){A a=new A();a.shout();} }可正常输出3,证明可以访问类的变量i,但改为下面的方式:class A{public

报错!无法从静态上下文中引用非静态 变量

1 import java.awt.Point; 2 class rectangle 3 { int x1=0; 4 int y1=0; 5 int x2=0; 6 int y2=0; 7 8 rectangle point(int x,int y,int z,int w) 9 {x1= x; 10 y1= y; 11 x2= z; 12 y2= w; 13 return this; 14 } 15 16 public static void main(String[] args) 17 18

postgresql自增字段初始值的设定

在实际开发中会有这样的需求,想要自己设置表中自增字段的初始值. 比如:有一个your_table表中有一个自增字段id,我们知道,插入数据后,默认是从1开始自增的. 但是假如现在有一个需求,是要求id从100开始插入,那么该怎么实现呢?其实就是一句sql命令的事儿: select setval('your_table_id_seq', 100, false); 执行成功后,进行测试,插入一条数据后,会发现主键id的值会从100开始递增. 原文地址:https://www.cnblogs.com/

postgresql 将同一个字段的值组合和将多个字段的值组合

多字段值根据连接符拼接 concat_ws(':',aaa,bbb) 单字段值根据连接符拼接 string_agg(ccc,' \r\n ') 如果要将多个字段的值拼接成一个: string_agg(concat_ws(':',aaa,bbb),' \r\n ') as xxx 结果:

"无法从静态上下文中引用非静态变量,非静态方法"

原因:1.用static修饰的方法称为静态方法,修饰变量则为静态变量,又分别叫做类方法或者类变量. 2.静态的方法可以在没有创建实例时使用,而申明为非静态的成员变量是一个对象属性,它只有在对象存在时引用,   因此如果在对象未创建实例时,在静态方法中调用了非静态成员方法自然是非法的. 改正:   1.在方法或者变量前面加static关键字   2.初始化(new)一个对象 原文地址:https://www.cnblogs.com/lydbky/p/8178055.html

MathWorks.MATLAB.NET.Arrays.MWArray”的类型初始值设定项引发异常 解决方法

原因 用的是matlab7运行时,后面又安装了matlab11,后面又重新安装了matlab7运行时,c盘下就有二个运行时的版本了,程序引用了后面的那个,编译后就出上面的问题 解决方法 1重新引用上面的dll 2重新生成x86平台 原文地址:https://www.cnblogs.com/dayspring/p/8661625.html