2014-11-07 29 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对某个类型进行操作并返回一个与其他类型不同的全新类型实例。就像我的三明治。