C# C“new()分配返回null或”;0“;
我在另一个类中声明了一个静态变量。该类声明它:C# C“new()分配返回null或”;0“;,c#,memory,allocation,C#,Memory,Allocation,我在另一个类中声明了一个静态变量。该类声明它: public class BaseClass : MonoBehaviour { // Static so should only allocate once public static SubClass m_subObj = new SubClass(); } 我曾尝试在“lock(object)”中支撑分配,但m_subObj始终为null。我已经包括了一些代码,显示解锁版本 下面是它的代码: public class Bas
public class BaseClass : MonoBehaviour
{
// Static so should only allocate once
public static SubClass m_subObj = new SubClass();
}
我曾尝试在“lock(object)”中支撑分配,但m_subObj始终为null。我已经包括了一些代码,显示解锁版本
下面是它的代码:
public class BaseClass : MonoBehaviour
{
// Static so should only allocate once
public static SubClass m_subObj = new SubClass();
}
public class SubClass : BaseClass
{
void Start()
{
if (m_subObj)
{
Debug.Log("SubClass:Start 1 - SubClass allocated");
return;
}
// This will pass
if (!m_subObj)
{
Debug.Log("SubClass:Start() 2 - Huh? Should be allocated");
m_subObj = new SubClass();
}
// This will pass too
if (!m_subObj)
{
Debug.Log("SubClass:Start() 3 - DOUBLE Huh? Should be allocated");
}
}
我期望:
(运行它)
子类:开始1-已分配静态子类
但是得到:
(运行它)
子类:Start()2-嗯?应该分配
? 子类:Start()3-DOUBLE-Huh?应该分配
出于某种原因,它不喜欢对象的new()。
AddComponent()仍然有效。某物
将静态类更改为
个别实例
Foo=gameObject.AddComponent<Bar>() as Bar;
Foo=gameObject.AddComponent()作为条形图;
谢谢大家的帮助。
干杯
Clancy您无法比较
之类的引用!m_subObj
在c#.@DanielA.White中,monobhavior
类有一个。不过,我不知道它应该在什么时候生成true或false。啊哈,隐式转换为bool
确实会允许代码编译。这意味着基本上是一个“非空”测试。在单个AppDomain中,这应该可以。如果我们不能自己轻松运行代码,就很难判断……我建议将代码更改为显式地与null
进行比较,部分原因是为了检查这是否有帮助(我不希望这样)部分原因是为了让不经常使用单一行为的人更清楚地了解这个问题。我试图重现你的问题,但无法重现,所以有些事情你没有向我们展示或告诉我们。试着编写一个小而完整的程序来重现这个问题,并将它发布到你的问题中;