c#中,这里边有个this的构造函数,他的意思是要先调用底下带有string newname参数的
c#中,这里边有个this的构造函数,他的意思是要先调用底下带有stringnewname参数的构造函数,再调用自己吗,可是他自己里边什么都没有,为什么还要调用,还有就是...
c#中,这里边有个this的构造函数,他的意思是要先调用底下带有string newname参数的构造函数,再调用自己吗,可是他自己里边什么都没有,为什么还要调用,还有就是为什么要先调用底下那个构造函数呢,不太理解
展开
展开全部
原理:第一:一个类可以定义多个构造函数重载,重载之间通过什么区分呢,就是通过参数列表(参数类型、数量和顺序)的不同,构造函数之间相互调用,就是在调用者方法名后面加个this(参数列表),this就是构造函数的意思,编译器会自动根据参数列表找到匹配的构造函数。
第二:为什么A构造函数调用了B构造函数必须先执行B,这个C#语言设计的就是这个样子,记住就行了,究其原因,可能是为了保证数据的参数完整性有效性,如果B是最后被调用,那么A传给B的参数有可能在调用B之前被修改,使得创建的对象出现错误。
原因:为什么一个构造函数要调用另一个构造函数,我们都知道构造函数是用来初始化对象的,如果某个构造函数已经完成了部分初始化功能,那么另一个构造函数可以直接调用,不需要重复写代码。举一个例子:
public class Person{
private String name;
private int age;
private bool gender;
//创建一个具有指定年龄、性别的person
public Person(int age, bool gender){
this.gender = gender;
this.age = age;
}
//创建一个具有指定年龄、性别、姓名的person
public Person(String name,int age, bool gender) this(age, gender){
this.name = name;
}
}
对于为什么这个构造函数里面什么都没有,这是一种理论情况,也就是只在考试才会出现,实际开发中不可能写这样的代码。
第二:为什么A构造函数调用了B构造函数必须先执行B,这个C#语言设计的就是这个样子,记住就行了,究其原因,可能是为了保证数据的参数完整性有效性,如果B是最后被调用,那么A传给B的参数有可能在调用B之前被修改,使得创建的对象出现错误。
原因:为什么一个构造函数要调用另一个构造函数,我们都知道构造函数是用来初始化对象的,如果某个构造函数已经完成了部分初始化功能,那么另一个构造函数可以直接调用,不需要重复写代码。举一个例子:
public class Person{
private String name;
private int age;
private bool gender;
//创建一个具有指定年龄、性别的person
public Person(int age, bool gender){
this.gender = gender;
this.age = age;
}
//创建一个具有指定年龄、性别、姓名的person
public Person(String name,int age, bool gender) this(age, gender){
this.name = name;
}
}
对于为什么这个构造函数里面什么都没有,这是一种理论情况,也就是只在考试才会出现,实际开发中不可能写这样的代码。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询