Unity - A计划(永久有效期) 扫二维码继续学习 二维码时效为半小时

(197评价)
价格: 4431.00元
枚举不能作为泛型使用,怎么处理?
LCCSK发起了问答2021-10-22
6
回复
511
浏览

public static BindableProperty<GameMode> CurrentGameMode = new BindableProperty<GameMode>()
    {
        Value = GameMode.None
    };

报错,怎么处理?

所有回复
  • 老师_Trigger 2021-10-23

    同学你好,可以参考一下:

    https://www.cnblogs.com/TianFang/archive/2011/01/09/1931555.html

    https://www.cnblogs.com/luguoshuai/p/10293421.html

    https://blog.csdn.net/qin_zhangyongheng/article/details/45793139

    还有-4条回复,点击查看
    你还没有登录,请先登录注册
  • LCCSK 2021-10-23

    老师,我又研究了一下你发的资料,自己也试了一遍,发现普通的泛型定义没有问题,很可能是BindableProperty.cs的问题,没有写的很好,报的错误是The type 'GameMode' cannot be used as type parameter 'T' in the generic type or method 'BindableProperty<T>'. There is no boxing conversion from 'GameMode' to 'System.IEquatable<GameMode>'.

    BindableProperty.cs:

    using System;

    public class BindableProperty<T> where T : IEquatable<T>
    {
        private T mValue;
        public T Value
        {
            get => mValue;
            set
            {
                if (!mValue.Equals(value))
                {
                    mValue = value;
                    OnValueChanged?.Invoke(value);
                }
            }
        }
        public Action<T> OnValueChanged;
    }

    麻烦老师看看怎么解决最好,谢谢老师了!yes

    • LCCSK 2021-10-23

      类似public static EnumAndTConverter<GameMode> a = new EnumAndTConverter<GameMode>();这样的语句不报错

      (0) 回复
    • 老师_Trigger 2021-10-24

      回复 @ LCCSK: 老师不是很明白,但是大概意思好像是同学想要实现枚举类型支持泛型约束吧,但是C#之前不支持,现在不知道支持不支持,这个同学可以查一下,但是同学可以用int代替,int是支持的,然后可以定义一个静态类或者静态方法来转化,把int转成枚举,这样可以实现类似的效果

      (0) 回复
    还有-3条回复,点击查看
    你还没有登录,请先登录注册
  • LCCSK 2021-10-24

    知道了,还是多谢老师了yes

    还有-5条回复,点击查看
    你还没有登录,请先登录注册
发表回复
你还没有登录,请先 登录或 注册!