[英]static property which returns class instance
我想使用类似链接的东西! 部分源代码如下所示:
public struct Vector3
{
public static Vector3 zero { get; }
}
该函数返回一个已经初始化的向量(每个轴上为0)。 这是可能的,因为它是结构? 那就是我所拥有的:
public class WorldBlock
{
public enum e_WorldBlockType
{
Undef,
Earth,
Stone,
Air // no block set
}
public static WorldBlock Empty { get; }
public e_WorldBlockType BlockType { get; set; }
public bool IsWalkable { get; set; }
public WorldBlock(e_WorldBlockType blockType = e_WorldBlockType.Undef, bool isWalkable = false)
{
this.BlockType = blockType;
this.IsWalkable = isWalkable;
}
}
但是我明白了: error CS0840: 'WorldBlock.Empty.get' must have a body because it is not marked abstract or extern. The property can be automatically implemented when you define both accessors
error CS0840: 'WorldBlock.Empty.get' must have a body because it is not marked abstract or extern. The property can be automatically implemented when you define both accessors
我应该如何写尸体?
编辑:如果添加例如一个private set
,它会编译,但是如果我使用它,则会得到一个空指针异常。
像这样:
private static WorldBlock __empty = ...;
public static WorldBlock Empty {
get {
return WorldBlock __empty;
}
}
如果您只想要一个空的WorldBlock,建议您写:
public static readonly WorldBlock Empty = new WorldBlock();
而不是您的财产。 但是,由于“ Empty”对象的设置者是公共的,因此这有点儿狡猾,因此实际上不能保证它实际上是空的。
你必须做:
public static WorldBlock Empty
{
get{return someThing; }
}
更换someThing
,不管你是想Empty
存储....如果那null
或什么的。
从您的标题...看来您想返回该类的实例。 如果您只想要此类的一个实例,那么您正在寻找Singleton
设计模式。
您的“空”实例是否应该共享并且相同? 如果是这样,则下面的正文可能是您要寻找的。
private static WorldBlock emptyInstance;
public static WorldBlock Empty
{
get
{
if (emptyInstance == null)
{
//initialize it
}
return emptyInstance;
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.