时间:2019-03-17 标签:c#EnumFunctionParameters

2023-12-30

作为后续这个问题。 https://stackoverflow.com/questions/492115/c-enums-as-function-parameters

如何调用函数并传入枚举?

例如我有以下代码:

enum e1
{
    //...
}

public void test()
{
    myFunc( e1 );
}

public void myFunc( Enum e )
{
    var names = Enum.GetNames(e.GetType());

    foreach (var name in names)
    {
        // do something!
    }

}

尽管当我这样做时,我收到“e1”是“类型”,但像“变量”一样使用的错误消息。有什么想法可以帮忙吗?

我试图保持该函数通用以适用于任何枚举而不仅仅是特定类型?这可能吗?...使用通用函数怎么样?这行得通吗?


您可以使用通用函数:

    public void myFunc<T>()
    {
        var names = Enum.GetNames(typeof(T));

        foreach (var name in names)
        {
            // do something!
        }
    }

并调用如下:

    myFunc<e1>();

(EDIT)

如果您尝试约束,编译器会抱怨T to Enum or enum.

因此,为了确保类型安全,您可以将函数更改为:

    public static void myFunc<T>()
    {
        Type t = typeof(T);
        if (!t.IsEnum)
            throw new InvalidOperationException("Type is not Enum");

        var names = Enum.GetNames(t);
        foreach (var name in names)
        {
            // do something!
        }
    }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

时间:2019-03-17 标签:c#EnumFunctionParameters 的相关文章

  • 有没有办法分析 WCF 应用程序的性能?

    我们正在尝试测量我们的系统的性能 该系统是一个使用 WCF 调用的 NET 3 5 应用程序 问题是到目前为止 我们无法分析这些调用中的方法 编写了一个 winforms 客户端应用程序来测试我们的系统 我们尝试使用ANTS 4 Profi
  • 如何拦截 .Net 中第三方库对非虚拟方法的调用?

    我认为我需要的是 net 人们称之为 透明动态代理 的东西 但到目前为止我所看到的所有实现 Castle DynamicProxy Spring NET AOP 等 都要求我至少执行以下操作之一 将拦截的方法声明为虚拟方法 包装类并创建包装
  • 加权 Voronoi 的 CGAL 2D APOLLONIUS 图 - 如何生成和获取面和顶点?

    我正在尝试根据阿波罗尼乌斯图生成加权沃罗诺伊 我正在使用 CGAL 库 我找不到如何从 apollonius 获取面和顶点的好例子 我有以下类型定义 typedef double NT typedef CGAL Cartesian lt N
  • 每个 CPU 核心处于 C0 电源状态的时间

    任何帮助弄清楚如何做到这一点都会很棒 在过去一秒内 每个 CPU 核心处于 C0 电源状态的时间有多少 这是针对 Mac 应用程序的 因此需要 Objective C cocoa 和 c OS X 没有任何公开 CPU c 状态的 API
  • 线程安全的get(访问器方法)

    我目前正在使用以下代码对变量进行线程安全访问 int gnVariable void getVariableValue int pnValue acquireLock Acquires the protection mechanism pn
  • 多个源文件中包含包含“const”的头文件

    Why does not包含定义的头文件const并被多个源文件包含会产生编译错误multiple definition const in header file h const int num 5 int x Error Multiple
  • WPF MVVM将DataTable绑定到DataGrid不显示数据

    我有一个简单的控件 其中包含一个 DataGrid 其中 ItemsSource 绑定到 DataTable 当我填充 DataTable 时 我可以看到 DataGrid 中添加了行 但没有显示任何数据 我没有为此 DataGrid 使用
  • WIX 自动生成 GUID *?

    假设我生成产品 ID 为 的 WIX XML 文件 另外 对于每个组件 GUID 我都使用
  • 在 C 程序中追踪数组越界访问/写入的推荐方法

    考虑用 C 语言编写一些不太明显的算法的实现 例如 让它成为递归快速排序 我在 K N King 的 C 编程 现代方法 第二版 书中找到了它 可以从here http knking com books c2 programs qsort
  • 使用 C 创建立体声正弦波

    我正在尝试用 C 创建立体声正弦 WAV 并且可能有不同的 可能是空白的 左声道和右声道 使用此函数为每个通道生成一个音调 int16 t create tone float frequency float amplitude float
  • c++11 中的 std::thread 问题

    我在尝试从标准模板库编译具有多线程的程序时遇到一些麻烦 当我尝试编译以下程序时 它返回一个晦涩的错误 include
  • 从空白启动时 VSTO 功能区不显示解决方案

    如果我从 文件 新建项目 菜单创建一个新的 Excel 2013 和 2016 VSTO 加载项 项目 然后单击 项目 添加新项目 gt 功能区 可视化设计器 则一切正常 我启动了应用程序 我的功能区显示在 Excel 中 但是 如果我首先
  • 我应该使用函数还是无状态函子?

    这两段代码做同样的事情 如您所见 它将用于排序函数 哪个更好 我通常写后一种 但我看到一些程序员像以前那样做 struct val lessthan binary function
  • 让 WIX 在项目中包含引用

    我对 WiX 和设置自定义安装程序完全陌生 所以我对问题的主题表示歉意 我有一个内部业务应用程序 日记 它构建并运行良好 因此我按照教程 官方文档添加 WiX 项目并引用日记的 csproj 然后构建并运行这个最基本版本的 WiX 安装程序
  • 如何使用 Caliburn.Micro MVVM 将焦点设置到控件

    我有一个表单 我想在发生某些用户操作时将焦点设置到文本框 我知道 MVVM 的处理方式是绑定到 VM 属性 但是 TextBox 没有允许这种情况发生的属性 从虚拟机设置焦点的最佳方法是什么 我创建了一个 IResult 实现 可以很好地实
  • Parallel.For 和 Break() 误解?

    我正在研究 For 循环中的并行性中断 看完之后this http tipsandtricks runicsoft com CSharp ParallelClass html and this http reedcopsey com 201
  • 如何获取在代码中 attrs.xml 中创建的枚举

    我创建了一个自定义视图 找到它here https bitbucket org informatic0re awesome font iconview 具有枚举类型的可声明样式属性 在 xml 中 我现在可以为我的自定义属性选择枚举条目之一
  • 在 C# 中加密并在 Flex 中解密

    我需要解密 Flex 中的一些数据 这些数据是用 C 加密并写入文件的 为了简单起见 我选择使用 as3crypto As3 库和 Bruce Schneier C 库 AS3 as3加密链接 http code google com p
  • 在同一条线上铸造两次

    我在项目中看到了这段代码 b的类型是void void b int a int unsigned long b 这条线毫无意义吗 我的意思是 这与a int b在所有情况下 这可能会避免 64 位 Unix 系统上的编译器警告unsigne
  • 在 C# 中将 ulong 映射到 long ?

    我正在尝试将 ulong 映射到 long 反之亦然 将 uint 映射到 int 反之亦然 如下所示 为了将值保存在具有签名类型的 MS SQL 数据库中仅限整数和大整数 我这样做是因为我必须检查 在数据库中 一个数字 uint ulon

随机推荐

  • Postgresql 中的 RRULE 解析

    目标 从 RRULE 字符串 即 FREQ WEEKLY INTERVAL 2 COUNT 8 WKST SU BYDAY TU TH 和开始时间戳 由于这些时间会根据用户的心血来潮而改变 因此需要 postgresql 来实现 1 严格的
  • 如何在Python 3中从字节缓冲区构造内存中的TarFile对象?

    是否可以使用包含 tar 数据的缓冲区在内存中创建 TarFile 对象 而无需将 TarFile 写入磁盘并再次打开它 我们获取通过套接字发送的字节 像这样的东西 import tarfile byte array client read
  • SQL Server 二进制(128)从小端转换为大端

    如何在 SQL Server 中将二进制 128 从小端转换为大端 尝试这样的事情 declare little binary 4 set little 0x02010000 select little bigEndian cast rev
  • 使用 SSH.NET 库从 .NET 连接到 MySQL

    我正在开发一个网页 ASP NET C 通过 SSH 查询远程服务器上的 MySQL 数据库 我正在使用这两个库 mysql connector net 6 9 7 和 Renci SshNet dll 我可以通过 SSH 连接使用远程服务
  • NineOldAndroids 动画不适用于 API > 10

    我在用NineOldAndroid执行动画的库 对于 API10 应用程序强制关闭 这是我的代码 import static com nineoldandroids view ViewPropertyAnimator animate imp
  • 如何阻止 Intellij 创建 src/main/java 和 src/main/scala-x 文件夹?

    我在 Intellij 15 0 2 中有一个仅用于 scala 编程的 SBT 项目 由于某种原因 该项目不断在我的项目中创建以下文件夹 src 主 java src main scala 2 10 src main scala 2 11
  • 如何获取从 PUT 方法传递的数据

    我正在为 Laravel 创建一个 API 我使用 PUT 方法来更新数据 我使用 PUT 方法通过 Postman 发送数据 在我的控制器中 我有一个空数组 如何访问传递的数据 在我的路线中 我有 Route put vehicletyp
  • 如何在 FastAPI 中上传 CSV 文件并将其转换为 Pandas Dataframe?

    我想将文件上传到 FastAPI 后端并将其转换为 Pandas DataFrame 但是 我似乎不明白如何使用 FastAPI 来做到这一点UploadFile https fastapi tiangolo com tutorial re
  • React Router Switch 和确切路径

    我读过这份文件反应路由器开关 https github com ReactTraining react router blob master packages react router docs api Switch md 我了解交换机和路
  • 周围物体算法

    我正在开发一款游戏 该位置可能只存在一个对象 x y where x and y are ints 例如 一个对象可能存在于 0 0 也可能不存在 但不可能同时存在多个对象 我正在尝试决定使用哪个 STL 容器来解决当前的问题以及解决此问题
  • iPhone 相机对焦

    我使用下面的代码来对焦 iPhone 相机 但它不起作用 我从Apple的AVCam示例代码中获取了这段代码 我做错了什么吗 有什么方法可以 检测iPhone是否对焦 void focusAtPoint CGPoint point AVCa
  • Chrome 有内置的调用堆栈吗?

    在 Visual Studio 中 我习惯于在任何断点处显示调用堆栈 Chrome 是否具有调用堆栈功能 可以让我查看断点之前的函数 如果没有 是否有替代方案 适用于 Chrome 的第三方解决方案 供开发人员用来查看哪些函数导致了断点 编
  • Microsoft SQL Server 中表的事务隔离级别

    这更多的是对我想法的确认 而不是一个问题 可以在 SQL Server 中以表为基础更改隔离级别 还是只能在会话级别上定义 更改 如下面的语句所示 SET TRANSACTION ISOLATION LEVEL SERIALIZABLE 那
  • 点击 NavigationLink 后如何执行操作?

    我的第一个视图中有一个加号按钮 看起来像一个 FAB 按钮 我想在点击 NavigationLink 中包含的某个步骤后隐藏它 到目前为止我有这样的事情 ForEach 0 lt 12 item in NavigationLink dest
  • Winforms ListView - 双击时停止自动检查

    如何使列表视图在双击某个项目时不自动检查该项目 我可以尝试挂钩 MouseDoubleClick 事件 并将 Checked 属性设置为 false 但这感觉有点像黑客 当实际检查某个项目时 我还会运行相当昂贵的计算 并且不希望此代码在双击
  • java中如何识别检查异常和非检查异常?

    在阅读有关异常的内容时 我总是会遇到受控异常和非受控异常 所以想知道如何区分哪个是什么 编辑 我想知道我是否创建任何异常类 那么如何创建为已检查或未检查的异常类 每个的意义是什么 All Throwables 除了以下子类java lang
  • 在未安装 Excel 的服务器上生成 Excel 文件

    我在用Microsoft Office Interop Excel并使用生成 Excel 文件SaveAs方法 这一切都可以在安装了 Excel 的计算机上正常运行 但是 我的服务器没有安装 Excel 如何生成我的文件 If you ge
  • 从 Shell 脚本将日期传递给 C 程序

    我想将用户以 YYYY MM DD HH24 MI SS 格式输入的日期传递给 C 程序 该程序进一步在数据库中输入条目 当我将命令行参数中输入的日期作为 2010 07 15 12 13 14 传递时 C 程序将其视为 2 个参数而不是
  • 当针对 ES5 / ES3 时,Typescript 会转译什么?

    我试图了解 Typescript 编译器何时会转译代码以使其与我指定的目标 ECMAScript 版本 ES5 或 ES3 兼容 例如 TSC 将转译for var int of intArray 很好 但它不转译Number isInte
  • 时间:2019-03-17 标签:c#EnumFunctionParameters

    作为后续这个问题 https stackoverflow com questions 492115 c enums as function parameters 如何调用函数并传入枚举 例如我有以下代码 enum e1 public voi