C# 关于c语言中的构造函数和方法#
使用构造函数而不是方法初始化的原因是什么 代码1:C# 关于c语言中的构造函数和方法#,c#,java,C#,Java,使用构造函数而不是方法初始化的原因是什么 代码1: class A { int x, y; public A() { x = 10; y = 4; } } 代码2: class A { int x, y; public fun() { x = 10; y = 4; } } 从上面看,代码1和代码2的区别是什么。 如果有人知道答案,请澄清我的疑问。第一个赋值发生在创建实例时。当执
class A {
int x, y;
public A() {
x = 10;
y = 4;
}
}
代码2:
class A {
int x, y;
public fun() {
x = 10;
y = 4;
}
}
从上面看,代码1和代码2的区别是什么。
如果有人知道答案,请澄清我的疑问。第一个赋值发生在创建实例时。当执行
fun()
方法时,会发生第二个赋值
顺便说一句,您可以在构造函数中调用
fun()
方法。第一个赋值发生在创建实例时。当执行fun()
方法时,会发生第二个赋值
顺便说一句,您可以在构造函数中调用
fun()
方法。当使用代码1时,A=newa()代码>将初始化x和y
使用代码2时,需要A A=newa()代码>和a.fun()代码>到初始x和y
如果您想在以后的某个时间将此方法用于其他Init,则应将变量的Init放在一个方法中
顺便说一句,fun不是方法的适当名称。当使用代码1时,a=newa()代码>将初始化x和y
使用代码2时,需要A A=newa()代码>和a.fun()代码>到初始x和y
如果您想在以后的某个时间将此方法用于其他Init,则应将变量的Init放在一个方法中
顺便说一句,fun不是一个合适的方法名称。构造函数确保对象被正确实例化。不能保证调用方将调用该方法来手动实例化对象。构造函数确保对象被正确实例化。无法保证调用方将调用该方法来手动实例化该对象。在创建对象时隐式调用构造函数。在第二种情况下,该方法是实例级方法。。您必须创建类型为A的对象,然后“更改”x和y的值。。。defualt构造函数将为您的int变量指定默认值(0)…当创建对象时,将隐式调用构造函数。在第二种情况下,该方法是实例级方法。。您必须创建类型为A的对象,然后“更改”x和y的值。。。defualt构造函数将为您的int变量分配默认值(0)…可以保证在创建对象时调用构造函数,但对于方法,则由您控制何时调用。如果在方法而不是构造函数中初始化值,如果在错误的时间调用该方法,则可能会产生副作用
因此,初始化构造函数中的值而不是方法始终是一种好的做法,这也是构造函数的目的。可以保证在创建对象时调用构造函数,但在使用方法的情况下,何时调用是您的控制。如果在方法而不是构造函数中初始化值,如果在错误的时间调用该方法,则可能会产生副作用
因此,初始化构造函数中的值而不是方法始终是一种好的做法,这也是构造函数的目的。构造函数用作初始值设定项,因为它提供了将对象初始化到内存的功能,或者在创建对象时构造函数将首先调用。如果您不单独初始化任何值,并且希望在结果中使用某些变量,则可以使用构造函数作为初始值设定项。
为什么在编码中使用构造函数?Bcz它具有在创建对象之前初始化某些东西的性质
我想你明白我的意思了。快乐学习。:)
感谢用作初始值设定项的构造函数,因为它提供了将对象初始化到内存的功能,或者在创建对象时构造函数将首先调用。如果您不单独初始化任何值,并且希望在结果中使用某些变量,则可以使用构造函数作为初始值设定项。
为什么在编码中使用构造函数?Bcz它具有在创建对象之前初始化某些东西的性质
我想你明白我的意思了。快乐学习。:)
感谢在技术上,您可以隐藏构造函数并使用工厂方法模式:
class A {
int x, y;
// Hidden constructor
protected A() {
x = 10;
y = 4;
}
// Factory method to create A class instances
public static A Create() {
...
A result = new A();
...
return result;
}
}
在您的示例中,工厂方法是一种超调,但它可能会有所帮助
在技术上实现单例、策略模式等时可以隐藏构造函数并使用工厂方法模式:
class A {
int x, y;
// Hidden constructor
protected A() {
x = 10;
y = 4;
}
// Factory method to create A class instances
public static A Create() {
...
A result = new A();
...
return result;
}
}
在您的示例中,工厂方法是一种超调,但它可能会有所帮助
在实现单例、策略模式等时调用构造函数来创建类的实例,不依赖调用,与方法不同调用构造函数来创建类的实例,不依赖调用,与方法不同,你在哪里调用函数?我不希望第二个类会编译(因为fun()方法没有返回类型),即构造函数必须与类同名。你在哪里调用函数?我不希望第二个类会编译(因为fun()方法没有返回类型)即,构造函数必须与类具有相同的名称