2 回答
TA贡献2037条经验 获得超6个赞
令我担心的是这个私有的 int _bl 语句。在这个类中,对这个变量的唯一引用与这个函数相关联。
显然我们不能看到所有的代码,但是如果我相信你这个Field(不是变量)只被这个函数引用,那么我会猜测它要么在其他方法可能已经引用它时被遗留下来,而现在这些方法不再存在,使用它或由方法使用它来维护超出任何单个方法(事件或属性)执行的状态。
递归看起来像冒泡的方式让我认为在这个函数调用结束时它也会被设置回 0。
在调用构造函数之前它被设置为零 。
不必要。它只是 设置回零的方法结束后if (materialMasterCat.Parent == 0)
这个类的每个实例。
因为控制器不是静态类,每个类创建都有它自己的私有版本_bl
,只能(通常)由类本身访问(私有访问修饰符)。
然而,我只是有点想知道为什么会这样写。有没有理由认为这不仅仅是函数的局部变量,用 0 初始化?
因为当这段代码运行时,它们的值都会是 1:
materialMasterCat.SortOrder = _bl;
但是发生的事情是每次调用函数时,它都会递增,因为它存在于类的作用域中,而不是函数作用域中。
您可以跨 MVC 控制器中的函数依赖局部私有变量吗?
私有变量始终可用,直到类被释放(通常),这个时间被称为对象的生命周期。
TA贡献1795条经验 获得超7个赞
我相信因为它是一个 int,所以它不能为空或“未初始化”,所以它的默认值是 0;由 MS Docs 证实
尝试将private int _bl;
函数内部放置为 as int _bl;
,您将看到编译错误,因为您无法_bl = _bl + 1;
对未初始化的值执行操作。因此,它不会在函数范围内自动初始化,但是当它是类实例的属性时会自动初始化。
您可以在此处阅读有关何时分配值以及何时未分配值的更多信息:https : //docs.microsoft.com/en-us/dotnet/csharp/language-reference/language-specification/variables这种特殊情况属于:
类的实例变量在创建该类的新实例时开始存在,并在没有对该实例的引用并且实例的析构函数(如果有)已执行时停止存在。类的实例变量的初始值是变量类型的默认值(Default values)。为了明确赋值检查的目的,类的实例变量被认为是初始赋值的。
- 2 回答
- 0 关注
- 209 浏览
添加回答
举报