gpt4 book ai didi

c# - 多态性问题 - 虚拟字段? (C#)

转载 作者:太空宇宙 更新时间:2023-11-03 22:27:38 25 4
gpt4 key购买 nike

我对类设计有疑问。

我的游戏对象有核心类。绘图时我需要从对象中检索位置。不幸的是,对象被视为它的基类型,因此位置不是从派生类中检索的,而是从它的父类中检索的。将字段定义为虚拟字段可以解决我的问题,但这是不可能的:(。我如何设计类模式来避免这个问题?

正在发生的事情的简单示例:

class BaseClass { public Vector2 position = new Vector2(){X=0,Y=0}; }
class Class:BaseClass { public new Vector2 position = new Vector2(){X=10,Y=10}; }

BaseClass c = new Class();
// c.position.X is now 0

最佳答案

您可以修改它以使用虚拟属性而不是字段。这将正确处理事情。

如果出于某种原因无法使用属性,您还可以按如下方式修改构造函数:

class BaseClass
{
public Vector2 position = new Vector2(){X=0,Y=0};
}

class Class:BaseClass
{
public Class()
{
this.position = new Vector2(){X=10,Y=10};
}
}

这并不完全相同,因为您没有使用自己的隐藏基类字段,但它会正确初始化它,以便您可以按照示例建议的那样使用它。

关于c# - 多态性问题 - 虚拟字段? (C#),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/722092/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com