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

(207评价)
优惠后 ¥1899.00优惠前 ¥2499.00 双十一全年最大力度限时优惠
1对1 答疑即时回复7天无理由退款30天价保提问必答

服务保障

1对1 答疑

提供专属的一对一在线答疑,快速答疑解惑。

即时回复

及时响应学习咨询,帮助解决问题。

7天无理由退款

购买后7天内可申请无理由退款。

30天价保

购买后30天内如遇降价,可申请价保。

提问必答

对于提问做到有问必答,帮您扫清学习过程中的种种障碍

枚举不能作为泛型使用,怎么处理?
LCCSK发起了问答2021-10-22
6
回复
706
浏览

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条回复,点击查看
    你还没有登录,请先登录或注册!
发表回复
你还没有登录,请先 登录或 注册!