返回类型指针与“newing a type”相同吗?在c#中

时间:2011-09-29 14:01:52

标签: c# new-operator

而不是......

Video v = new Video();

我想做

Video v = GetVideo();

public Video GetVideo()
{
   return new Video();
}

这两个电话完全相同吗?

4 个答案:

答案 0 :(得分:1)

是的,他们是。我已经多次使用这种方法来返回一个由一些默认测试值预先填充的对象。

答案 1 :(得分:1)

  

返回的类型指针与“newing a type”相同吗?

这取决于返回对象引用的方法。

例如,您提供的代码段在功能上是等效的,因为GetVideo()除了返回new Video()之外什么都不做。

答案 2 :(得分:1)

至少你可以将它们视为相同,如果它们位于同一个程序集中,它们可能会被内联到相同的IL代码中。

答案 3 :(得分:1)

在这种情况下,它们与相同,因为方法会创建一个新的Video。但是,请考虑一下:

private Video video;

public Video GetVideo()
{
   if (video == null)
   {
       video = new Video();
   }
   return video;
}

现在只会在第一个调用中创建一个新的Video对象 - 后续调用将返回对现有对象的引用。

(当然这只是一个简单的例子 - 它可能有时创建一个新的,有时不会,有时会返回null等。)