xcxd.net
当前位置:首页 >> 在C#中构造函数名和类名相同,那怎么判断nEw实例化时调用的是类还是构造函数? >>

在C#中构造函数名和类名相同,那怎么判断nEw实例化时调用的是类还是构造函数?

构造函数 是方法 方法是定义在类里的 方法不能被实例化 实例化类后 才能用类里的方法(静态方法除外,无需实例化类可直接用) new 只能实例化类 构造函数是类被实例化时调用的

构造函数是类实列化的依据,构造函数名字和类名一样是一种约定,谈不上为什么

实例化时候的那个new用于创建对象和调用构造函数.这就是它的用途了.如果不是实例化时候调用的new那是有其它含义的.比如可以用于向基类成员隐藏继承成员.int,float,char等等是预定义的值类型,存放于堆栈中.string虽然是预定义的引用类型,存放于堆中.c#为了使语义遵循一般的,直观的字符串规则,对字符串的运算符(如"+"运算符)进行了重载.总结一下.值类型存放于堆栈,不用实例化.引用类型存放于堆,需要用new运算符实例化.为什么string不用实例化呢.其实string是披着羊皮的狼.由于作了特殊处理,string s="大便";这条语句编译器会认为是与string s=new string("大便");等效的.

A a=new A(); 这个A()就是构造函数~~~ 构造函数其实是有返回值的 它返回一个对象的实例 你问的说反了 应该是在用new调用了构造函数以后 构造函数会返回一个对象的实例(也就是创建一个对象)

是这些原因:1.构造函数定义的时候不能有返回值,方法名称必须和类名一样2.可以有多个构造函数,也就是重载3.new的时候是根据参数类型来选择使用哪个构造函数例如:class AAA{ public AAA(){} public AAA(int a){}}如果AAA a = new AAA();调用的就是那个没有参数的构造方法如果AAA a = new AAA(10);调用的就是那个有一个int型参数的构造方法

楼主不要固执,构造函数只执行类的实例化过程,当一个类在托管堆被建立后构造函数将不能再被调用,放在本例中来讲,一旦你类的实例可以执行到第二个构造函数,那么类的实例化过程事实上已经完成,下面的动作例如this.str2 = something

构造函数的方法名必须与类名相同.构造方法是一种特殊的方法,具有以下特点.(1)构造方法的方法名必须与类名相同.(2)构造方法没有返回类型,也不能定义为void,在方法名前面不声明方法类型.(3)构造方法的主要作用是完成对象的初始化工作,它能够把定义对象时的参数传给对象的域.(4)构造方法不能由编程人员调用,而要系统调用.(5)一个类可以定义多个构造方法,如果在定义类时没有定义构造方法,则编译系统会自动插入一个无参数的默认构造器,这个构造器不执行任何代码.(6)构造方法可以重载,以参数的个数,类型,或排列顺序区分

这样的话你就需要使用接口了,使用多态就可以实现了.

类在被实例化之前就相当与只是一个房子的蓝图,而被实例化后的对象才是真正房子.new 关键字就是开辟堆内存.对象才是正在存在的实体.类和对象之间的关系需要好好揣摩,祝你成功.

与类名相同的必然是构造函数 贴出代码看看

相关文档
lstd.net | hyqd.net | krfs.net | mdsk.net | dfkt.net | 网站首页 | 网站地图
All rights reserved Powered by www.xcxd.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com