微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

有哪些C#约定可用于组合父方法和子方法输出?

如何解决有哪些C#约定可用于组合父方法和子方法输出?

我在JavaScript领域经历了很多月之后才开始学习C#(仅供参考)。

我阅读了C#inheritance简介以及何时和何时不使用new/override,并且(请问无知)想知道是否存在将父级和派生的输出相结合的最佳实践或约定具有相同签名的类方法

我正在开发的游戏中的一个示例(不是整个文件,只是示例):

// CharController
using static TargetController;
public abstract class CharacterController : MonoBehavIoUr,ICharacter
{
      public virtual targettypes Target() {
        return targettypes.Character;
    }
}
// PlayerController
using static TargetController;
public class PlayerController : CharacterController,IPlayer
{
      public override targettypes Target()
    {
        return base.Target() | targettypes.Player;
    }
}
// EnemyController
using static TargetController;
public class EnemyController : CharacterController,IEnemy
{
      public override targettypes Target()
    {
        return base.Target() | targettypes.Enemy;
    }
}

targettype枚举启用了标志,并且将类型设置为2的幂,以便可以使用按位OR运算符组合值。

我假设(根据我目前的理解)假设,如果我想从EnemyController派生一个类,并定义一个返回base.Target() | targettypes.Small的相同方法,例如,我将在调用时得到这三种类型派生(叶)类Target方法Character,Enemy,Small

如果这种方法是完全错误的,或者存在一些将具有相同签名的方法输出组合在一起的约定,请随时给我一个新的方法(请以智慧和良好的权威!)。是否以某种方式链接方法?)。

感谢您的时间!

解决方法

对我很好。尽管您可能应该将其重命名为GetTargetTypes()或将其设为属性:

public abstract class CharacterController : MonoBehaviour,ICharacter
{
    public virtual TargetTypes TargetTypes => TargetTypes.Character;
}

public class PlayerController : CharacterController,IPlayer
{
    public override TargetTypes TargetTypes => base.TargetTypes | TargetTypes.Player;
}

注意:如果您给枚举名称和成员名称相同的名称(common practice),则可能需要使用全限定名称来防止混淆。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。