2014-11-07 39 views
1

我正在閱讀new運算符的文檔,它用於在堆上創建新對象並調用構造函數。這個定義在非專業術語中意味着什麼,因爲我是一個年輕的程序員,如果答案用非常簡單的術語或短語解釋,我會很感激。瞭解動態內存關鍵字新建

線我遇到新的特定代碼正在做一個互聯網來源完成C#教程的例子。

var newNumber = new StringBuilder(); 

所以,我要求的,打破什麼新的運營商,也如果你能告訴我什麼行代碼確實將是有益的,以及簡單的例子。

回答

1

它創建一個對象的新實例,並將其放在堆上。這樣做也會啓動該對象的構造函數,您可以根據自己的喜好進行修改。例如,假設我有一類人,我可以創建構造函數:

public Person(String name) 
{ 
    // do something with name 
} 

這將讓其他類實現的人知道了人的創造一個新的實例時,他們需要給一個字符串作爲參數。

他們會再調用

var newPerson = new Person("John"); 

新的關鍵字基本上創建你在其他地方所定義的「藍圖」的一個具體實例。因此,在上面的代碼中,newPerson將是一個實際的對象,它基於「Person」類中的藍圖。

動態是指你不必自己分配堆上的對象。這是委託,所以你不必擔心你的實際對象在內存中的位置。 (與其他一些編程語言不同,這會給你更多的控制權)。

這意味着作爲一名程序員,您不知道在哪裏可以找到您的對象,但您並不在意,只要您可以使用它即可。 :)

+0

每當另一個對象想要使用對象的人,他們必須創建一個新的實例? – 2014-11-07 02:53:17

+0

如果它是一個對象,您將使用多次,當然,您將保留它在一個變量中。最後是類的變量。如果該對象可以被其他對象使用,那麼你可以公開該變量。這是一個非常簡短和簡單的解釋。你應該開始閱讀一本編程書籍以獲得正確的理解! – Andrew 2014-11-07 03:07:55

3

想象一下,我們正在談論三明治。我喜歡潛艇;你喜歡卷。我們正在談論我們知道存在的事情,但不在我們面前。我們正在談論那些類型的三明治。

當然,在所有這些談話之後,我們都餓了,去熟食店。我說我喜歡潛水艇,想要一個新實例這種類型的三明治 - 我可以持有,看到並感激地吃。

new對某個類型進行操作並返回一個與其他類型不同的全新類型實例。就像我的三明治。