使用 Enum.Parse() 时出现意外结果

2023-12-29

class Program
{
    static void Main(string[] args)
    {
        String value = "Two";
        Type enumType = typeof(Numbers);
        Numbers number = (Numbers)Enum.Parse(enumType, value);
        Console.WriteLine(Enum.Parse(enumType, value));
    }

    public enum Numbers : int
    {
        One,
        Two,
        Three,
        Four,
        FirstValue = 1
    }
}

这是我在应用程序中使用的枚举的简化版本。某些枚举名称没有值的原因是因为我使用它们的名称作为参数进行 Enum.Parse 操作,而具有值的枚举名称是从 int 解析的。

如果您单步执行上面的代码并调查“number”变量,您会发现它实际上是“Two”,但控制台中的输出是“FirstValue”。现在我不明白为什么,你呢?

好吧,解决方案很简单——只需为无价值的枚举赋予一个值即可。但我还是很好奇。


我怀疑两者FirstValue and Two内部值为 1,因此系统不知道要输出哪个字符串。

public enum Numbers : int
{
    One, // defaults to 0
    Two, // defaults to 1
    Three, // defaults to 2
    Four, // defaults to 3
    FirstValue = 1 // forced to 1
}

每个枚举值都有一个唯一的整数值,但并非每个整数值都有唯一的枚举值。

当你解析时"two",它在内部存储为整数1。然后,当您尝试将其转换回字符串时,根据用于查找该名称的技术,您可能会得到"Two" or "FirstValue"。正如您所说,解决方案是为每个枚举值指定一个定义的整数值。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Enum.Parse() 时出现意外结果 的相关文章

随机推荐

  • 我应该使用一个大的 SQL Select 语句还是几个小的 SQL Select 语句?

    我正在使用从 MySQL 发送的数据构建一个 PHP 页面 是不是更好有 1 SELECT具有 4 个表连接的查询 或者 4 small SELECT没有表连接的查询 我确实从 ID 中选择 哪种方法更快 每种方法的优缺点是什么 我只需要每
  • 导入二维数据的 Python 和内存高效方法

    我正在尝试运行一些使用 Python 分析数据的脚本 我很快就对它占用的 RAM 空间感到惊讶 我的脚本从文件中读取两列整数 它通过以下方式导入它 import numpy as N from sys import argv infile
  • Antd - 有没有办法改变卡片标题的背景颜色?

    通过添加 style 属性 我只能更改 Card 组件主体部分的颜色 我怎样才能更改标题部分
  • 我是否需要内存屏障来访问已完成的线程修改的内存?

    以下为 C 术语 我有一个线程 A 和线程 B 共享对整数值 P 的访问 线程 A 初始化该值并在运行时更新它 然后线程A完成 线程 B 等待线程 A 完成 标准操作系统 API 调用 无论使用什么操作系统 并想要读取 P 线程 B 是否需
  • MySQL 更新并从另一个表中选择

    我有3张桌子 Kommuner 和 Fylker 公司 公司表有一个空字段forretningsadresse fylke但另一个领域forretningsadresse kommune有一个值 所以基本上 我需要填写forretnings
  • 表与两个相关表的总和

    我在这里提出这个 我确信是 简单的问题 我不知道如何解决 我有这个架构 有了这个数据 我的预期结果是 对于 约翰 纳什 PERSON NAME TOTAL FRUIT TOTAL COOKIE JOHN NASH 10 38 对于 奥斯卡
  • 包装一个对象

    我有一个对象 它有一堆公共属性 没有 getter 和 setter 坏的 因此 我创建了一个包含属性的类 并为它们创建了 getter 和 setter 我的计划是将对象包装在我的类中 因此这意味着不能直接访问属性 我有点不确定该怎么做
  • 如何在 Web Api 操作中锁定长异步调用?

    我有这样的场景 我有一个 WebApi 和一个端点 触发时会执行大量工作 大约 2 5 分钟 这是一个具有副作用的 POST 端点 我想限制执行 以便如果向此端点发送 2 个请求 不应该发生 但安全总比遗憾更好 其中一个请求将必须等待以避免
  • Android手机与穿戴模块之间共享文件

    几个月前 我最初只使用移动模块开始我的项目 现在我也有兴趣为可穿戴设备配置我的应用程序 也就是说 我的所有文件 Java XML drawables 等 都在移动模块中 所以我是否需要将我想要在移动模块和可穿戴模块之间共享的所有文件传输到新
  • 如何获取 Tensorflow seq2seq 嵌入输出

    我正在尝试使用张量流训练序列到序列模型 并一直在查看他们的示例代码 我希望能够访问编码器创建的向量嵌入 因为它们似乎具有一些有趣的属性 然而 我真的不清楚这是怎么回事 在单词的向量表示示例中 他们详细讨论了这些嵌入的用途 但似乎没有提供访问
  • 如何在开发机器上使用ansible模板本地创建文件

    我从 ansible 开始 正在寻找一种方法来使用 ansible 剧本在服务器和本地环境上创建样板项目 我想在本地使用 ansible 模板来创建一些通用文件 但是我如何使用ansible在本地执行某些操作呢 我读了一些 local ac
  • SSRS 报告每个参数值的重复表

    大家对这里的一般性问题感到抱歉 但我一直在互联网上查找 但找不到解决方案 我有一份 SSRS 报告 在运行之前用户必须输入一个参数 Location 在查询中 指定仅返回该位置匹配的结果 IE where Company location
  • 在reactjs中切换下拉菜单

    我的导航栏上有一个简单的下拉菜单的以下代码 https jsfiddle net jL3yyk98 10 https jsfiddle net jL3yyk98 10 索引 html div div 导航菜单 js var NavMenu
  • Polymer:在纸张按钮按“确定”后获取纸张对话框内的纸张输入值

    我需要在按下 确定 纸张按钮后获取纸张对话框内某些纸张输入字段的值 I have
  • 检查时间是否在某一分钟内的最佳方法是什么?

    我想编写一个简单的 python 脚本 它将检查是否是给定小时 分钟之前的 2 分钟 然后每天或在给定时间的给定日期调用我的函数 该脚本将在 cronjob 中每分钟运行一次 所以执行myfunction 的两种情况 每天 10 55201
  • 如何更改 Tkinter 按钮周围框的颜色?

    我尝试了在 Stackoverflow 上找到的一些东西 例如在按钮周围放置一个框架并为其指定颜色 就像所说的那样here https stackoverflow com questions 53101307 how do i change
  • 两个不常见的PHP运算符一起使用来获取图像像素颜色,请解释

    The PHP 图像颜色 http www php net manual en function imagecolorat php函数可用于获取图像像素的 RGB 值 如文档中所示 im imagecreatefrompng php png
  • 在连接中广播左表

    这是我的加入 df df small join df big id leftanti 它似乎我只能广播正确的数据帧 https stackoverflow com questions 62735494 broadcast join in s
  • 如何使用 Zebra P4t 打印机打印带有尖音符(如“é”)的法语字符

    我的问题是关于用尖音符打印法语字符 例如 etc with a 斑马 P4t 打印机 考虑下面的 ZPL 指令 XA FO20 20 CI28 A0 20 20 FD Amiti FS XZ 我已将这些指令放入编码为 UTF 8 的文件中
  • 使用 Enum.Parse() 时出现意外结果

    class Program static void Main string args String value Two Type enumType typeof Numbers Numbers number Numbers Enum Par