C#2.0类和对象学习系列之构造函数

来源:互联网 发布:appcleaner mac 破解 编辑:程序博客网 时间:2024/06/05 04:50

        在对象创建的时刻,有一个方法自动执行。我们称这种方法为构造函数。语法上,C#构造函数与其所在的类名相同,而且不返回任何值(甚至void都不用写)。一个类可以:

        1.没有构造函数。这种情况下C,#编译器会自动提供一个默认的构造函数,即没有任何参数的构造函数,默认构造函数都是公有的

        2.有一个构造函数。这种情况下,总是调用这一个构造函数,编译器将不会提供默认构造函数。

        3.有多个构造函数。多个构造函数以不同的签名式区分,使用时具体的选择采用方法重载的规则 。编译器将不会提供任何的默认构造函数。

        总结以上各点可知,只要定义了至少一个构造函数,编译器就不会提供默认构造函数。

        在结构中情况有所不同。因为不允许定义没有参数的构造函数。所以编译器始终会提供一个默认的构造函数。

        当构造函数返回时,要求所有非静态的值类型字段都已经初始化。

        构造函数野兽可见性级别的控制,使用方式与其他方法一样。

        结构的相关例子

       

struct Artical
    {
        
public int Price;
        
public Artical(int price)       //构造函数1
        {
            
this.Price = price;
        }

        
public Artical(double price)    //构造函数2
        {
            
this.Price = price;
        }
    }
    
class Program
    {
        
        
static void Main(string[] args)
        {
            Artical a;                          
//调用结构默认构造函数
            Artical b = new Artical(6);         //调用构造函数1
            Artical c = new Artical(6.4);       //调用构造函数2
        }

    }

 

        类的相关例子

       

class Artical
    {
        
public int Price;
        
public Artical(int price)       //构造函数1
        {
            
this.Price = price;
        }

        
public Artical(double price)    //构造函数2
        {
            
this.Price = price;
        }

        
public Artical()                //构造函数3
        {
            
this.Price = price;
        }
    }
    
class Program
    {
        
        
static void Main(string[] args)
        {
            Artical a 
= new Artical();          //调用构造函数3
            Artical b = new Artical(6);         //调用构造函数1
            Artical c = new Artical(6.4);       //调用构造函数2
        }

    }

 

        创建引用类型时必须使用new操作符。创建值类型时,如果想调用构造函数,也必须使用new操作符,如果不使用,实例能够创建,但却可能没有调用任何构造函数。

原创粉丝点击