【问题标题】:Unable to cast object of type 'System.Int16' to my Enum variable [duplicate]无法将“System.Int16”类型的对象转换为我的枚举变量 [重复]
【发布时间】:2021-08-27 21:45:42
【问题描述】:

我正在尝试在我的 mysql 数据库 (smallint(6)) 上转换数字类型,但出现以下错误:

无法将“System.Int16”类型的对象转换为“MyEnum”类型。

我的枚举是:

public enum MyEnum
{
    Value1 = 1,
    Value2 = 2,
    Value3 = 3,
    Value4 = 4
}

转换发生在这里:

MyEnum enumHere = (MyEnum)reader["cod_sist_orig"];

Reader 是 IDataReader,列是不可为空的列,来自数据库的值为 1。

【问题讨论】:

    标签: c# mysql .net .net-core


    【解决方案1】:

    您需要先转换为short

    MyEnum enumHere = (MyEnum)(short)reader["cod_sist_orig"];
    

    或者将枚举的底层类型改为short

    public enum MyEnum : short
    {
        Value1 = 1,
        Value2 = 2,
        Value3 = 3,
        Value4 = 4
    }
    

    有关更多信息,请查看unboxing 的文档和language specification 的相关部分。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-03
      • 2011-01-01
      • 2015-11-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多