关于c#中的构造函数和方法

时间:2013-12-12 13:07:45

标签: 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;
    }
}

从上面看,Code 1和Code 2之间有什么区别。 如果有人知道答案,请清除我的怀疑。?

8 个答案:

答案 0 :(得分:3)

保证在创建对象时会调用构造函数,但是在方法的情况下,它是您控制何时调用。如果在方法而不是构造函数中初始化值,则在错误的时间调用方法可能会产生副作用。

因此,最好在构造函数中初始化值而不是方法,这是构造函数的目的。

答案 1 :(得分:2)

创建实例时会发生第一次分配。当您执行fun()方法时,会发生第二次分配。

顺便说一句,你可以在构造函数中调用fun()方法。

答案 2 :(得分:1)

构造函数确保正确实例化对象。无法保证调用者将调用该方法来手动实例化对象。

答案 3 :(得分:1)

与方法

不同,调用构造函数来创建类的实例并且不依赖于调用

答案 4 :(得分:0)

使用代码1时,A a = new A();将初始化x和y。

使用代码2时,您需要A a = new A();a.fun();来初始化x和y。

如果您想在以后的某个时间使用此方法进行其他操作,则应将变量初始化放在方法中。

btw fun不是方法的适当名称。

答案 5 :(得分:0)

创建对象时隐式调用构造函数。在第二种情况下,该方法是一个实例级方法..您将必须创建一个类型为A的对象,然后“更改”x和y的值... defualt构造函数将默认值(0)分配给您的int变量...

答案 6 :(得分:0)

构造函数用作初始化程序,因为它提供了将对象初始化为内存的功能,或者在此时创建对象时构造函数将首先调用。如果不单独初始化任何值,并且想在结果中使用某个变量,则可以使用构造函数作为初始化程序。 为什么构造函数在编码中使用? Bcz它具有在创建Object之前初始化某些东西的性质。

我认为你明白我的观点。快乐的学习。 :)

由于

答案 7 :(得分:0)

从技术上讲,您可以隐藏构造函数并使用 工厂方法 模式:

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;  
  }
}

在您的示例中,工厂方法是一个过冲,但它可能会有所帮助 实施单身人士,策略模式等时。