了解动态内存关键字New

时间:2014-11-07 02:39:37

标签: c# new-operator

我正在阅读new运算符的文档,它用于在堆上创建新对象并调用构造函数。这个定义在外行人的术语中意味着什么,因为我是一个年轻的程序员,如果用非常简单的术语或短语来解释答案,我将不胜感激。

我遇到的第一行的特定代码是从完成c#教程的互联网资源中做的示例。

var newNumber = new StringBuilder(); 

所以,我要求简单的例子来分解新的运算符,以及你是否可以告诉我代码行的作用也会有所帮助。

2 个答案:

答案 0 :(得分:3)

想象一下,我们正在谈论三明治。我喜欢潜艇;你喜欢卷。我们谈论的是我们所知道的东西,但并不在我们面前。我们正在谈论三明治的类型

当然,经过所有这些谈话,我们饿了,去熟食店。我说我喜欢潜艇,想要一个这种三明治的新实例 - 我可以抓住,看到并感谢,吃。

new对某个类型进行操作,并返回该类型的全新实例,与所有其他实例不同。就像我的三明治一样。

答案 1 :(得分:1)

它创建一个对象的新实例,并将其放在堆上。这样做也会启动对象的构造函数,您可以根据自己的喜好进行修改。例如,假设我有一个Person类,我可以创建构造函数:

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

这将让其他实现Person的类知道在使用Person创建新实例时,他们需要将String作为参数。

然后他们会打电话给

 var newPerson = new Person("John");

新关键字基本上创建了'蓝图的具体实例。你在其他地方定义过因此在上面的代码中,newPerson将是一个实际的对象,它基于" Person"中的蓝图。类。

使用dynamic意味着您不必自己在堆上分配对象。这是委托,所以你不必担心你的实际对象在内存中的位置。 (与其他编程语言不同,它可以为您提供更多控制)。

这意味着作为一名程序员,您不知道在哪里找到您的对象,但只要您可以使用它,您就不会在意。 :)