小编Pau*_*bes的帖子

C# - 对象范围

我看过这个这个,我有以下问题,看看我是否理解正确.鉴于代码

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#

8
推荐指数
2
解决办法
5549
查看次数

标签 统计

c# ×1