如何将变量限制为一组固定的字符串?

2024-02-25

如果我想将数据库中的spicelevel列的值限制为1、2和3,我可以这样做

    private enum SpiceLevel
    {
        Low=1,
        Medium=2,
        Hot=3
    }

然后在代码中我可以做(int)SpiceLevel.Low选择 1 作为香料级别。

现在,如果我需要只能接受“红玫瑰”、“白玫瑰”和“黑玫瑰”作为数据库中列的值,该怎么办?处理这个问题的优雅方法是什么?

我正在考虑将它们存储在配置文件或常量中,但这都不像枚举那么优雅。有任何想法吗?

Update:

答案here https://stackoverflow.com/questions/630803/associating-enums-with-strings-in-c-sharp为我工作


您可以使用property为了这

public string[] AllowedRoses = new string[] {  "Red Rose", "White Rose" ,"Black Rose" };
string _Rose = "Red Rose";
public string Rose
{
    get
    {
        return _Rose;
    }
    set
    {
        if (!AllowedRoses.Any(x => x == value)) 
               throw new ArgumentException("Not valid rose");
        _Rose = value;
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将变量限制为一组固定的字符串? 的相关文章

  • 向进度条添加百分比文本 C#

    我有一个方法可以显示进程栏何时正在执行以及何时成功完成 我工作得很好 但我想添加一个百分比 如果完成 则显示 100 如果卡在某个地方 则显示更少 我在网上做了一些研究 但我无法适应我正在寻找的解决方案 这是我的代码 private voi
  • InvalidOperationException - 对象当前正在其他地方使用 - 红十字

    我有一个 C 桌面应用程序 其中我连续创建的一个线程从源 实际上是一台数码相机 获取图像并将其放在 GUI 中的面板 panel Image img 上 这必须是另一个线程 如它是控件的代码隐藏 该应用程序可以工作 但在某些机器上 我会在随
  • 注销租约抛出 InvalidOperationException

    我有一个使用插件的应用程序 我在另一个应用程序域中加载插件 我使用 RemoteHandle 类http www pocketsilicon com post Things That Make My Life Hell Part 1 App
  • 如何将 protobuf-net 与不可变值类型一起使用?

    假设我有一个像这样的不可变值类型 Serializable DataContract public struct MyValueType ISerializable private readonly int x private readon
  • 如何让 Swagger 插件在自托管服务堆栈中工作

    我已经用 github 上提供的示例重新提出了这个问题 并为任何想要自己运行代码的人提供了一个下拉框下载链接 Swagger 无法在自托管 ServiceStack 服务上工作 https stackoverflow com questio
  • 确保 StreamReader 不会挂起等待数据

    下面的代码读取从 tcp 客户端流读取的所有内容 并且在下一次迭代中它将仅位于 Read 上 我假设正在等待数据 我如何确保它不会在没有任何内容可供读取时返回 我是否必须设置低超时 并在失败时响应异常 或者有更好的办法吗 TcpClient
  • 提交后禁用按钮

    当用户提交付款表单并且发布表单的代码导致 Firefox 中出现重复发布时 我试图禁用按钮 去掉代码就不会出现这个问题 在firefox以外的任何浏览器中也不会出现这个问题 知道如何防止双重帖子吗 System Text StringBui
  • 在 C 中匹配二进制模式

    我目前正在开发一个 C 程序 需要解析一些定制的数据结构 幸运的是我知道它们是如何构造的 但是我不确定如何在 C 中实现我的解析器 每个结构的长度都是 32 位 并且每个结构都可以通过其二进制签名来识别 举个例子 有两个我感兴趣的特定结构
  • 使用接口有什么好处?

    使用接口有什么用 我听说它用来代替多重继承 并且还可以用它来完成数据隐藏 还有其他优点吗 哪些地方使用了接口 程序员如何识别需要该接口 有什么区别explicit interface implementation and implicit
  • 由 IHttpClientFactory 注入时模拟 HttpClient 处理程序

    我创建了一个自定义库 它会自动为依赖于特定服务的 Polly 策略设置HttpClient 这是使用以下方法完成的IServiceCollection扩展方法和类型化客户端方法 一个简化的例子 public static IHttpClie
  • 从 Linux 内核模块中调用用户空间函数

    我正在编写一个简单的 Linux 字符设备驱动程序 以通过 I O 端口将数据输出到硬件 我有一个执行浮点运算的函数来计算硬件的正确输出 不幸的是 这意味着我需要将此函数保留在用户空间中 因为 Linux 内核不能很好地处理浮点运算 这是设
  • 如何在 32 位或 64 位配置中以编程方式运行任何 CPU .NET 可执行文件?

    我有一个可在 32 位和 64 位处理器上运行的 C 应用程序 我试图枚举给定系统上所有进程的模块 当尝试从 64 位应用程序枚举 32 位进程模块时 这会出现问题 Windows 或 NET 禁止它 我认为如果我可以从应用程序内部重新启动
  • 如何禁用 fread() 中的缓冲?

    我正在使用 fread 和 fwrite 读取和写入套接字 我相信这些函数用于缓冲输入和输出 有什么方法可以在仍然使用这些功能的同时禁用缓冲吗 Edit 我正在构建一个远程桌面应用程序 远程客户端似乎 落后于服务器 我不知道可能是什么原因
  • AES 128 CBC 蒙特卡罗测试

    我正在 AES 128 CBC 上执行 MCT 如中所述http csrc nist gov groups STM cavp documents aes AESAVS pdf http csrc nist gov groups STM ca
  • 动态添加 ASP.Net 控件

    我有一个存储过程 它根据数据库中存储的记录数返回多行 现在我想有一种方法来创建 div 带有包含该行值的控件的标记 如果从数据库返回 10 行 则 10 div 必须创建标签 我有下面的代码来从数据库中获取结果 但我不知道如何从这里继续 S
  • 使用 %d 打印 unsigned long long

    为什么我打印以下内容时得到 1 unsigned long long int largestIntegerInC 18446744073709551615LL printf largestIntegerInC d n largestInte
  • 调用堆栈中的“外部代码”是什么意思?

    我在 Visual Studio 中调用一个方法 并尝试通过检查调用堆栈来调试它 其中一些行标记为 外部代码 这到底是什么意思 方法来自 dll已被处决 外部代码 意味着该dll没有可用的调试信息 你能做的就是在Call Stack窗口中单
  • Oracle Data Provider for .NET 不支持 Oracle 19.0.48.0.0

    我们刚刚升级到 Oracle 19c 19 3 0 所有应用程序都停止工作并出现以下错误消息 Oracle Data Provider for NET 不支持 Oracle 19 0 48 0 0 我将 Oracle ManagedData
  • 如何从 ODBC 连接获取可用表的列表?

    在 Excel 中 我可以转到 数据 gt 导入外部数据 gt 导入数据 然后选择要使用的数据源 然后在提供登录信息后 它会给我一个表格列表 我想知道如何使用 C 以编程方式获取该列表 您正在查询什么类型的数据源 SQL 服务器 使用权 看
  • 当从finally中抛出异常时,Catch块不会被评估

    出现这个问题的原因是之前在 NET 4 0 中运行的代码在 NET 4 5 中因未处理的异常而失败 部分原因是 try finallys 如果您想了解详细信息 请阅读更多内容微软连接 https connect microsoft com

随机推荐

  • Anaconda Navigator 无法创建新环境

    我在工作中需要使用Python 今天刚刚安装了Anaconda Navigator 我可以毫无问题地打开 Navigator GUI 我可以打开 创建新环境 提示 我填写详细信息并点击 确定 导航器在基本 根 选项卡下为我请求的环境创建一个
  • 由于 gcc 编译器版本不受支持,Caffe 编译失败

    我挣扎着Caffe http caffe berkeleyvision org 汇编 不幸的是我没能编译它 Steps http caffe berkeleyvision org installation html cmake compil
  • 单击后防止 JButton repaint()

    我有一个按钮 我想在点击后更改背景 我的问题是按钮自动呼叫paintComponent 如何防止这种情况发生 我预计点击按钮后按钮将是蓝色的 但它仍然是红色的 package test import java awt Color impor
  • 使用 TI-MSP430 的 DSP 的 C/C++ 库或示例代码

    我正在开发一个小型 dsp 项目 进行音频处理 例如 奈奎斯特速率采样 过采样和欠采样 重建 该项目是使用我的板实时嵌入的 我当前使用的板 芯片是德州仪器 TI 的 msp430 系列 MSP430F5438 实验板http focus t
  • 获取目录时出现 System.UnauthorizedAccessException

    我对 C 非常陌生 所以我一直在从事一个小型宠物项目 我创建了一个小程序 用于将目录的大小与给定的大小进行比较 如果该目录相同或更大 则会记录该目录的路径 long size Convert ToInt32 Size 1024 1024 s
  • 来自 JSON 对象的动态 UI

    我正在尝试找到一种将动态 JSON 对象转换为有效 HTML 网页的方法 这个想法是能够将需要显示的内容从物联网设备推送到云端 并让用户能够输入和保存配置 json 看起来像这样 loginConfiguration username st
  • Groovy 的隐藏功能?

    Locked 这个问题及其答案是locked help locked posts因为这个问题是题外话 但却具有历史意义 目前不接受新的答案或互动 看起来 Groovy 在这个线程中被遗忘了 所以我只会向 Groovy 问同样的问题 尝试限制
  • 有没有办法让客户端脚本也从 Ara 框架中的代理/集群服务自动加载?

    首先 基于 SSR 的 MFE 的一个很棒的框架 我正在尝试 Ara Svelte Micro App1 Vue Micro App 2 Nuxt JS Appshell 如中所述https ara framework github io
  • C 字符串:简单问题

    我在下面初始化了三个变量 char c1 Hello char c2 H e l l o 0 char c3 Hello 我知道 c1 和 c2 是相同的 并且它们都是字符串 因为它们以 0 结尾 然而 c3与c1和c2不同 这是因为 c3
  • Infiniband 寻址 - 主机名到 IB 地址(无需 IBoIP)

    我刚刚开始熟悉 infiniband 我想了解可用于解决 infiniband 节点的方法 基于代码的示例来自 RDMA 使用 IB 动词进行读写 http thegeekinthecorner wordpress com 2010 09
  • 如何使用 linq 从 DataTable 中过滤掉空行?

    我有一个从 Excel 数据构建的数据表 但有时 Excel 返回的行中所有字段都为空 我想一般性地过滤掉这些 而不考虑列名 我认为 Linq 可以很好地做到这一点 但要实现这一点有点困难 到目前为止 这就是我得到的 var nonempt
  • 如何在浏览器中从Go服务器下载文件

    我的代码从远程 url 获取文件并在浏览器中下载文件 func Index w http ResponseWriter r http Request url http upload wikimedia org wikipedia en b
  • iPhone 配置实用程序无法识别 iOS 8 设备

    随着 iOS 8 最近的更新 我无法使用 iPhone 配置实用程序加载我的测试设备 该程序根本无法识别装有 iOS 8 的设备 当 iOS 7 发布时 iPCU 不需要更新 尽管它确实可以与 iOS 7 配合使用 Apple 支持网站上的
  • 批处理文件对多个目录中的所有文件执行命令

    我想制作一个运行此命令的批处理文件 C Program Files x86 IrfanView i view32 exe C Users digi admin TIFFs OLD DIRECTORY tif ini C Users digi
  • Visual Studio:如何中断已处理的异常?

    我希望 Visual Studio 在发生处理的异常时中断 即我不只是想看到 第一次机会 消息 我想调试实际的异常 例如我希望调试器在异常时中断 try System IO File Delete someFilename catch Ex
  • C 中的结构初始化出现错误:预期表达式

    我有一个这样的结构 struct foobar int i char word 我知道这会起作用 struct foobar int i char word struct foobar three 3 three 为什么以下不起作用 str
  • 始终块中的 Veriloggenerate/genvar

    我试图让一个模块通过 ISE 12 4 中的语法检查 但它给了我一个我不明白的错误 首先是代码片段 parameter ROWBITS 4 reg ROWBITS 1 0 temp genvar c generate always pose
  • IntelliJ 社区版中的 Spring Boot 项目

    我是 IntelliJ 社区版的新手 任何人都可以帮助我在 IntelliJ 社区版中创建 Spring Boot 项目 对于终极版 有 spring boot 初始化程序 但我找不到社区版的任何内容 我点击了此链接但找不到任何解决方案 使
  • 编辑元素时 Java 优先级队列重新排序

    我正在尝试实现 Dijkstra 算法 以使用优先级队列查找最短路径 在算法的每一步中 我都会从优先级队列中删除距离最短的顶点 然后更新优先级队列中其每个邻居的距离 现在我读到 当您编辑 Java 中的优先级队列中的元素 确定排序的元素 时
  • 如何将变量限制为一组固定的字符串?

    如果我想将数据库中的spicelevel列的值限制为1 2和3 我可以这样做 private enum SpiceLevel Low 1 Medium 2 Hot 3 然后在代码中我可以做 int SpiceLevel Low选择 1 作为