请问下在构造函数中给某个成员变量赋值算不算初始化。为什么readonly 的变量可以在构造函数中赋值两次!
如下:
class MyClass
{
public readonly int a=44;
public MyClass()
{
a = 1;
a = 2;
}
}
初始化编译的时候进行,构造函数运行的时候进行,我一直认为理解为构造函数不是初始化,是不是理解错了,请求详细解惑下!
追答基础怎么学的
引用百科的话
构造函数 是一种特殊的方法 主要用来在创建对象时初始化对象 即为对象成员变量赋初始值,总与new运算符一起使用在创建对象的语句中 特别的一个类可以有多个构造函数 可根据其参数个数的不同或参数类型的不同来区分它们 即构造函数的重载
构造通俗点理解,new一个类new的就是构造,什么叫new?实例化一个新的东西,那你new的是构造,那构造不是初始化吗? 构造就是用来初始化一个类的。他没有别的作用。你不能把别的代码放进去。那样不科学(不规范)。
实际上对于一个类来说,总会有一些成员变量需要赋值,那赋值最好的地方就是构造。
那么请问下,初始化是不是说也可以在运行的时候进行,而不只是在编译的时候进行!
追答是的。初始化的意义是什么? 你的类什么时候被创建? 是你项目运行时类就创建了吗?不是吧,是你使用了New关键字时才创建。 除非是静态的,静态都是你以启动项目就加载到内存里了
初始化不应该是编译的时候执行的么,构造函数是运行时执行的啊!我一直是这么理解的,我理解错了?
追答构造函数有两种一种是静态构造函数那个是在编译的时候就创建初始化!!还有一种是非静态的在创建对象的时候创建初始化!!
追问请问下,你的意思是初始化有在编译的时候进行,而有的在运行时进行。初始化和赋值是一个意思么!