我看过这个和这个,我有以下问题,看看我是否理解正确.鉴于代码
using System;
namespace returnObject
{
class myObject
{
public int number { get; set; }
}
class Program
{
static void Main(string[] args)
{
myObject mainObj = make();
mainObj.number = 7;
}
public static myObject make()
{
myObject localObj = new myObject();
localObj.number = 4;
return localObj;
}
}
}
Run Code Online (Sandbox Code Playgroud)
我希望localObj在make方法结束时超出范围,因此,obj.number在main函数中设置为7会失败.它没有.我认为我说的是正确的:
localObj 是对象的引用localObj 在堆栈上创建 localObj 在make方法结束时超出范围. localObj引用的对象在堆上.所以,我正确地认为通常所localObj引用的对象在make方法结束时被垃圾收集器标记为删除但是由于引用值已被传递回mainObj,因此该对象被引用,因此不符合条件删除?
另外是以这种方式创建对象的好习惯吗?
c# ×1