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

        在对象创建的时刻,有一个方法自动执行。我们称这种方法为构造函数。语法上,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操作符,如果不使用,实例能够创建,但却可能没有调用任何构造函数。

你可能感兴趣的:(C#,c#,编译器,class,string,struct,c)