【问题标题】:Can't cast enum to int dot42无法将枚举转换为 int dot42
【发布时间】:2013-06-26 07:58:01
【问题描述】:

我正在评估使用 dot42 框架来使用 C# 来定位 android.. 因此,在了解 dot42 能做什么和不能做什么的过程中,我遇到了以下强制转换不起作用的问题。抛出 Java 表达式错误。

 public enum Days { Sat = 1, Sun, Mon }

 Days day = Days.Sun;
 int dayNumber = (int)day; // <----- Throws Error

有没有办法解决这个问题?

谢谢...

【问题讨论】:

  • 这是一个简单而常见的错误,在google上很容易找到...
  • int dayNumber = day.ordinal();
  • 我想在谷歌上找到它并不容易,因为我已经搜索了 2 天。 ordinal 方法不存在,我有最新的 dot42 框架。还是谢谢...
  • 忘了说...这种类型的转换由于某种原因被dot42转换忽略了..所以整行没有移植到apk中。我可以使用手表或 Convert.ToInt32(day); 来解决错误

标签: c# android dot42


【解决方案1】:

您确定您使用的是 1.0.0.70 版本吗?

下面的测试代码在这里运行正常。

namespace TestDays
{
    [Activity]
    public class MainActivity : Activity
    {
        protected override void OnCreate(Bundle savedInstance) 
        {
            base.OnCreate(savedInstance);
            testDays();
            SetContentView(R.Layouts.MainLayout);
        }

                public enum Days { Sat = 1, Sun, Mon }

        public int testDays() 
        {
            Days day = Days.Sun;
            int dayNumber = (int)day; // <----- Throws Error
            return dayNumber;
        }

   }
}

披露:我为 dot42 工作。

【讨论】:

  • 非常感谢您的帮助。您的代码有效。现在,我看到它的方式是通过转换省略从未使用过的变量..这不起作用:protected override void OnCreate(Bundle savedInstance) { Days day = Days.Sun; int dayNumber = (int)day; base.OnCreate(savedInstance); SetContentView(R.Layouts.MainLayout); } ....
  • 但这样做:受保护的覆盖无效 OnCreate(Bundle savedInstance) { Days day = Days.Sun; int dayNumber = (int)day;天数++; // 任何带有变量 base.OnCreate(savedInstance); 的表达式SetContentView(R.Layouts.MainLayout); } 如果你有时间来阐明这个问题。那对你很好。感谢您的帮助..
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-06
  • 1970-01-01
相关资源
最近更新 更多