2013-07-02 44 views
1

在一些文檔中,我看到了一些沒有聲明類型的方法(例如void,string,int等)。像這樣:沒有聲明類型的書寫方法

public ActorRecord() 
    { 
     ActorMovies = new List<MovieActorRecord>(); 
    } 

private readonly ITaxonomyService _taxonomyService; 
    private readonly IContentManager _contentManager; 

    public MovieFeatureEventHandler(ITaxonomyService taxonomyService, IContentManager contentManager) 
    { 
     _taxonomyService = taxonomyService; 
     _contentManager = contentManager; 
    } 

這些方法做什麼呢。 |之間有什麼區別? public ActorRecord()和public void/string ActorRecord()| ?

+3

這是一個構造函數 – DGibbs

回答

4

你可能已經注意到,這些方法也有相同的名稱作爲類(或結構),他們在。

他們被稱爲constructors

問:public ActorRecord()與公衆void ActorRecord()之間有什麼區別?

答:在class ActorRecord {}裏面,第一個是構造函數,第二個是語法錯誤。

+0

哦,是的,他們的類名是相同的名字。謝謝你的幫助。 – Arash

1

問題中的方法稱爲構造函數。當你創建一個對象的新實例時,調用構造函數方法中的代碼來'設置'有問題的對象。

例如

Public Class Thing 
{ 
    private int _amount; 

    public Thing() 
    { 
     _amount = 5; 
    } 
} 

如果我把這個代碼:

var thing = new Thing(); 

然後,將獲得一個新的東西用的 '5'

的_amount變量如果添加了無效比它將成爲一種正常的方法,並被稱爲像其他方法:

thing.Thing() 
+0

但是,方法(不是構造函數)不允許使用與聲明它的類(或結構)完全相同的名稱。 –