方法和构造函数

时间:2009-07-15 08:51:33

标签: c#

我现在正在学习C#并且是编程世界的初学者。 我有一本名为The Herbert Schildt的完整参考书。到目前为止它是一本好书,我正在学习方法和构造函数。

我很困惑方法和构造函数的区别。因为在书中它有几乎相同的例子。我不知道如何区分它们。 我很感激你的想法。 顺便说一句,我在这里有两个定义,我只想知道如何区分它们

感谢您的帮助

干杯

14 个答案:

答案 0 :(得分:21)

构造函数仅在创建类的新实例时有效。这是第一个在实例上运行的方法,它必须运行,并且只运行一次。

实例上的方法一旦被创建,就可以在实例上的零次到无限次之间调用。

隐式运行构造函数。创建类的新实例时,它会自动运行。方法是明确运行的。它必须从某个外部源或类中的方法 - 或构造函数 - 调用。

构造函数旨在用于布线。在构造函数中,您希望避免执行实际工作。你基本上准备要使用的类。一种方法旨在进行实际工作。

public class MyType
{
    private SomeType _myNeeds;

    // constructor
    MyType(SomeType iWillNeedThis)
    {
        _myNeeds = iWillNeedThis;
    }

    // method
    public void MyMethod()
    {
        DoSomethingAbout(_myNeeds);
    }
}

答案 1 :(得分:15)

构造函数是一种方法..一种在类的“构造”上被调用的特殊方法。

  

定义:构造函数是一个类   C ++和C#中的成员函数   与班级本身同名。

     

构造函数的目的是   初始化所有成员变量   创建此类的对象。   获取的任何资源,如内存   通常会发布或打开文件   在类析构函数中。

来自About.com

答案 2 :(得分:5)

构造函数是一种具有特殊含义的实例方法 - 特别是在使用 new 创建相应类的实例时会在内部调用它。这是关键的区别。

其他一些细微差别是构造函数必须与它所属的类具有相同的名称,并且它不能具有任何返回值,即使是void。

答案 3 :(得分:5)

创建对象时将自动调用构造函数,而必须显式调用方法。 构造函数需要与类的名称相同,而函数不必相同。 构造函数签名(标头)中没有给出返回类型。它与班级相同 构造函数体中没有return语句。

示例:

class Widget //Some Class "Widget"
{
    int _size;
    int _length;
// Declaring a Constructor, observe the Return type is not required

public Widget(int length)
    {
        this._length = length;
    }
// Declaring a Method, Return type is Mandator

    public void SomeMethod(int size)
    {
        this._size = size;
    }
}

//Calling the Constructor and Method

class Program
{
    static void Main()
    {

//Calling the Constructor, Observe that it can be called at the time the Object is created
        Widget newObject = new Widget(124);

//Calling the Method, Observe that the Method needs to be called from the New  Object which has been created. You can not call it the way Constructor is called.

        newObject.SomeMethod(10);I

    }
}

答案 4 :(得分:4)

请注意,构造函数的材质是方法。它意味着构造函数是一种特殊类型的方法,它的名称与类完全相同,但没有输出paramether.Constructor是在从类创建对象时调用的。

Public class person()
  {
     public person()
     {
     }
   }

答案 5 :(得分:3)

构造函数方法名称与类名称相同。此外,它没有返回类型。或者,如果愿意,构造函数方法本身没有名称,但返回类型是类类型。

public class Foo
{
    // Constructor
    public Foo()
    { }

    public void Bar()
    { }
}

答案 6 :(得分:2)

允许他们做什么而言而言,构造函数与方法的区别并不大。方法和构造函数之间的主要概念差异是它的目的。

构造函数将对象置于有效的可用状态,并且在开头只调用一次。方法将对象从一个有效状态更改为另一个有效状态。 (好吧,有些方法只检索信息,不需要改变对象的状态。)

编辑:我觉得,特别是对于C#,上面的解释可能会让人感到困惑,因为不可变对象在语言中并不是非常罕见的习语,所以OP会有很多对象遇到不会有变化的状态。复杂概念通常具有简单,优雅和错误的单行解释。

答案 7 :(得分:0)

就他们如何操作对象而言,他们的行为类似。构造函数是对象的一种方法,但它是一种特殊的方法。

它的特殊之处在于如何从外部调用它。构造函数被调用作为创建对象的过程的一部分。正常方法在对象上显式调用(在创建完成后)。

答案 8 :(得分:0)

类不变量
类负责保留不变量 - 即:类为调用者提供保证,例如object.weight永远不会消极”“列表中没有重复项名称“等。

方法操纵现有对象,因此可以依赖方法入口处保证的类不变量。方法需要确保它将有效状态转换为另一个有效状态。

构造函数从空中拉出对象,因此必须创建不变量。

对象存在
当构造函数抛出异常时,假定该对象从未存在过。因此,例如,终结者将永远不会运行。 C#中的后果相比较弱,它们在具有确定性破坏的语言中更为突出,例如C ++。

答案 9 :(得分:0)

构造函数是特殊类型的方法。每当在内存中创建一个新对象时,就会自动调用此方法。此外,构造函数没有任何返回类型,而其他方法具有返回类型。

答案 10 :(得分:0)

Constructer是初始化类字段的类的特殊方法。 Constucter名称与类名相同。它没有返回类型。创建实例时,调用时间构造函数。如果开发人员无法定义构造函数,则无法分配构造函数内存,然后调用隐式构造函数,并使用固定值或数据类型的默认值初始化字段。

答案 11 :(得分:0)

在C#中,在类实例化时调用构造函数。它没有返回类型,因为它不返回任何内容。我通常用它来实例化需要对象引用的类属性,比如Collection对象,自定义对象(类),需要实例化的其他对象。程序员不需要编写C#构造函数。如果你不写一个,编译器将自动生成一个,然后调用它。

构造函数也可以重载。所以你可以有几个构造函数,每个构造函数都有不同的参数如果你碰巧重载了构造函数,请确保包含一个没有参数的空构造函数,以防有任何调用该类没有传递任何参数。

public class MyClass {
     public List<int> MyIntList { get; set; }
     MyClass() {

     }
     MyClass(int i) {
          MyIntList = new List<int>();
          MyIntList.Add(int i);
     }
}

答案 12 :(得分:0)

除了以前的技术答案外,构造函数还应提供必要的最小初始化,以确保您可以使用该特定的类(即对象),此外,构造函数还应使类自足。

所以我们设计,编写的所有代码都是为了解决实际问题。因此,如果您想阅读,可能需要至少有一本书。因此,如果Read是您的课程,则可能要在此初始化书籍列表。因此,书籍可以是静态数据,也可以是XML或任何其他来源的数据。

答案 13 :(得分:-1)

构造函数是特殊方法,用于使用不同的签名/参数初始化类成员