将泛型参数转换为整数或从整数转换

2024-01-03

我想编写通用类,旨在与内置类型一起使用,例如byte and ushort。在内部计算中,我需要将泛型类型转换为整数,然后再转换回泛型类型。我找到了编译此类代码的方法,例如:

class Test<T> where T : struct, IConvertible
{
    public static T TestFunction(T x)
    {
        int n = Convert.ToInt32(x);
        T result = (T)Convert.ChangeType(n, typeof(T));
        return result;
    }
}

我认为,如果在计算循环中使用此类转换,则可能会显着降低性能。有没有更好的方法来进行这些转换?


int to T转换有点棘手。我想你可以使用Expression在这里上课。

Test<T>类应该看起来像这样:

class Test<T> where T : struct, IConvertible
{
    private static Func<int, T> _getInt;

    static Test()
    {
        var param = Expression.Parameter(typeof(int), "x");
        UnaryExpression body = Expression.Convert(param, typeof(T));
        _getInt = Expression.Lambda<Func<int, T>>(body, param).Compile();
    }

    public static T TestFunction(T x)
    {
        int n = Convert.ToInt32(x);
        T result = _getInt(n);
        return result;
    }
}

它准备_getInt = x => (T)x在静态构造函数中为您提供并稍后使用它来转换int to T.

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

将泛型参数转换为整数或从整数转换 的相关文章

  • 更新面板工作速度非常慢

    我正在编写一个用户可以注册的应用程序 注册时 可以选择多个选项 并根据这些注册字段可见或不可见以及是否必需 我想出了一个想法 所有字段都将位于 updatePanel 中 当用户更改注册选项时 我将在服务器端设置这些字段的可见性 它可以工作
  • 尝试了解使用服务打开对话框

    我已经阅读了有关使用 mvvm 模式打开对话框的讨论 我看过几个使用服务的示例 但我不明白所有部分如何组合在一起 我发布这个问题寻求指导 以了解我应该阅读哪些内容 以更好地理解我所缺少的内容 我将在下面发布我所拥有的内容 它确实有效 但从我
  • 如何将 SOLID 原则应用到现有项目中

    我对这个问题的主观性表示歉意 但我有点卡住了 我希望之前处理过这个问题的人能够提供一些指导和建议 我有 现在已经成为 一个用 C 2 0 编写的非常大的 RESTful API 项目 并且我的一些类已经变得巨大 我的主要 API 类就是一个
  • cpp.react库的C++源代码中奇怪的“->* []”表达式

    这是我在文档中找到的 C 片段cpp react 库 https github com schlangster cpp react implicit parallelism auto in D MakeVar 0 auto op1 in g
  • 语音识别编程问题入门

    所以 你们可能都看过 钢铁侠 其中托尼与一个名为贾维斯的人工智能系统进行交互 演示剪辑here http www youtube com watch v Go8zsh1Ev6Y 抱歉 这是广告 我非常熟悉 C C 和 Visual Basi
  • 在 C# 中,如何根据在 gridview 行中单击的按钮引用特定产品记录

    我有一个显示产品网格视图的页面 该表内有一列 其中有一个名为 详细信息 的超链接 我想这样做 以便如果用户单击该特定产品的详细信息单元格 将打开一个新页面 提供有关该产品的更多信息 我不确定如何确定哪个Product记录链接的详细信息以及我
  • 如何在 C# Designer.cs 代码中使用常量字符串?

    如何在 designer cs 文件中引用常量字符串 一个直接的答案是在我的 cs 文件中创建一个私有字符串变量 然后编辑 Designer cs 文件以使用此变量 而不是对字符串进行硬编码 但设计者不喜欢这样抛出错误 我明白为什么这行不通
  • 如何使用 Regex.Replace 从字符串中删除数字?

    我需要使用Regex Replace从字符串中删除所有数字和符号 输入示例 123 abcd33输出示例 abcd 请尝试以下操作 var output Regex Replace input d string Empty The d标识符
  • Eigen 和 OpenMP:由于错误共享和线程开销而没有并行化

    系统规格 Intel Xeon E7 v3 处理器 4 插槽 16 核 插槽 2 线程 核心 Eigen 系列和 C 的使用 以下是代码片段的串行实现 Eigen VectorXd get Row const int j const int
  • 什么是空终止字符串?

    它与什么不同标准 字符串 http www cplusplus com reference string string 字符串 实际上只是一个数组chars 空终止字符串是指其中包含空字符的字符串 0 标记字符串的结尾 不一定是数组的结尾
  • 如何将AVFrame转换为glTexImage2D使用的纹理?

    如您所知 AVFrame 有 2 个属性 pFrame gt data pFrame gt linesize 当我从视频 sdcard test mp4 android平台 读取帧后 并将其转换为RGB AVFrame副 img conve
  • 从网页运行 ClickOnce 应用程序,无需用户操作

    我们有一个基于 Java 的 Web 应用程序以及用 C 编写的相同应用程序 如果 java 检查器发现客户端计算机上没有安装 Java 则应该运行该应用程序 这个想法是运行 C 单击一次 http en wikipedia org wik
  • 在 .NET MAUI 中实现 TouchTracking

    我一直致力于将我们的应用程序从 Xamarin Forms 迁移到 NET MAUI 我们的应用程序几乎没有绘图功能 用户可以用手指进行绘图 我们用了TouchTrackingXamarin Forms 中的 nuget 包 但与 NET
  • 如何递归取消引用指针(C++03)?

    我正在尝试在 C 中递归地取消引用指针 如果传递一个对象 那就是not一个指针 这包括智能指针 我只想返回对象本身 如果可能的话通过引用返回 我有这个代码 template
  • 将二变量 std::function 转换为单变量 std::function

    我有一个函数 它获取两个值 x 和 y 并返回结果 std function lt double double double gt mult double x double y return x y 现在我想得到一个常量 y 的单变量函数
  • 将 Word 转换为 PDF - 禁用“保存”对话框

    我有一个用 C 编写的 Word 到 PDF 转换器 除了一件事之外 它工作得很好 有时 在某些 Word 文件上 后台会出现一条消息保存源文件中的更改 gt 是 否 取消 但我没有对源文件进行任何更改 我只想从 Word 文件创建 PDF
  • 无法将字符串文字分配给装箱的 std::string 向量

    这是我的类型系统的简化版本 include
  • 为什么空循环使用如此多的处理器时间?

    如果我的代码中有一个空的 while 循环 例如 while true 它将把处理器的使用率提高到大约 25 但是 如果我执行以下操作 while true Sleep 1 它只会使用大约1 那么这是为什么呢 更新 感谢所有精彩的回复 但我
  • 我可以使用 lambda 函数或 std::function 对象来代替函数指针吗?

    我有一个需要使用的库 它定义了以下内容 typedef void CallbackFunction const int i 并且有一个注册回调的函数 如下所示 void registerCallback CallbackFunction p
  • MySqlConnectionStringBuilder - 使用证书连接

    我正在尝试连接到 Google Cloud Sql 这是一个 MySql 解决方案 我能够使用 MySql Workbench 进行连接 我如何使用 C 连接MySqlConnectionStringBuilder 我找不到提供这三个证书的

随机推荐

  • 导出 CSV 响应 laravel 5.5 并下载为 csv 文件

    我正在尝试使用 ajax 请求导出并下载 csv 文件中的一些数据 我能够以 json 响应输出数据进行测试 但无法将其下载到 data csv 文件中 以下是我到目前为止编写的代码 public function download Req
  • 为什么 Android aapt 会删除 asset 的 .gz 文件扩展名?

    当我将 GZIP 压缩文件添加到 Android 项目的资源中时 打包项目时 gz 扩展名将被删除 因此 例如 我的资产文件夹中的 foo gz 需要在代码中使用getAssets open foo 我使用的其他扩展名 例如 html 似乎
  • Xamarin 绑定类别返回错误:无法在静态类中声明实例成员

    我正在尝试绑定ReFrostedViewController https github com romaonthego REFrostedViewController到 c 我使用 Objective Sharpie 来生成界面 但是当我使
  • 调试 JBoss 100% CPU 使用率

    最初发布关于服务器故障 https serverfault com questions 122065 debugging jboss 100 cpu usage 有人建议这个问题最好在这里问 我们正在使用 JBoss 运行两个 WAR 一个
  • 关于 LoadFunc 的示例和更多说明

    在哪里可以找到有关 LoadFunc 的更多信息 示例 除了http web archive org web 20130701024312 http ofps oreilly com titles 9781449302641 load an
  • OpenCV 设置键盘事件回调

    我在 OSX 和 Ubuntu 系统上使用 C 中的 openCV 我想要一个等效的函数setMouseCallback但对于键盘事件 按下按键 据我所知 在 openCV 中执行此操作的方法是使用waitKey 但实际上它不能用作回调 因
  • 如何动态添加 ng-click 处理程序

    我尝试在之前生成的按钮 动态 上添加 ng click 但效果不佳 我也尝试过在这个论坛上找到的所有解决方案 但没有一个能很好地工作 我的html代码 div class container max height div content d
  • 等待'background-image' css样式完全加载

    我的应用程序正在 Angular 5 中开发 我想先加载背景图片 div class sign in 然后才加载页面的其余部分 已经尝试过 窗口加载 窗口 文档 onload document getElementById mainDiv
  • 如何在iPhone中实现VoIP+SIP? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我想为 iPhone 开发 VoIP 应用程序 但我不知道 VoIP 概念的基础知识 也不知道是否有任
  • msbuild PackageReference.PrivateAssets = 全部似乎不起作用

    我有一个引用 NUnit3TestAdapter 的测试项目 我不会将此引用复制到依赖于此的项目 我认为设置 PrivateAssets All 就可以了 但显然我误解了它的工作原理 因为它没有达到预期的效果 这是代码 汇总 Rollup
  • Java中字符与int的转换

    您无法从 int 转换为 char 因此这是非法的int i 88 char c i 然而这是允许的char c 88 不是一个普通的数字并且int文字 这怎么被允许呢 char实际上是 Java 中的无符号 16 位整数类型 与其他整数类
  • 无法通过反射休眠获取字段值

    我在 jpa 中更新对象时遇到问题 我有 Bean 用户 public class User Id GeneratedValue strategy GenerationType IDENTITY Column name id unique
  • 访问Android的OBEX服务器并读取数据

    我想知道是否可以使用 Bluecove 从 Windows 的 Android OBEX 服务器读取数据 联系人 未接来电等 我在 Windows 中尝试了以下代码 但它返回OBEX HTTP NOT ACCEPTABLE连接时 据我所知
  • Marklogic 8 Windows 7 安装后登录

    我已在具有 8Gb 内存的 64 位 Windows 7 计算机上安装了 MarkLogic 8 服务器似乎运行良好 除了我无法登录之外 一切似乎都很好 使用 使用 Marklogic Server 或 管理 Marklogic Serve
  • UIAlertController:addSubview

    我想向我的警报控制器添加一个子视图 但为什么按钮要放在顶部呢 我该如何解决这个问题 let alert UIAlertController title nil message nil preferredStyle UIAlertContro
  • HTTP 错误 404.3 - 未找到 - 由于扩展配置,无法提供您请求的页面

    HTTP 错误 404 3 未找到 由于扩展配置的原因 无法提供您请求的页面 如果页面是脚本 请添加处理程序 如果应下载该文件 请添加 MIME 映射 IIS 7 上托管的 WCF 服务出现此错误的原因可能是什么 已回答here https
  • Groovy 文件无法在 Intellij IDEA 中编译

    我有 Maven 项目 包含 java 和 groovy 测试 在命令行maven编译中 所有测试都在运行 但在我的IDEA项目 由 AutoImport maven项目 自动创建 中 IDEA将groovy文件复制到 target tes
  • IE7 与 Firefox/Opera/Chrome 之间的间距差异

    我对 IE7 与 Firefox Chrome Opera 中无序列表的垂直空间量一直存在问题 而且我似乎找不到解决方案 在IE7中 空间变小了 这也是我希望看到的 在 Firefox Chrome 和 Opera 中 之间的间距大约是原来
  • java.lang.RuntimeException:在android中createWindowSurface失败EGL_BAD_ALLOC

    我为我的应用程序创建了 1080x1920 的自定义 Galaxy S4 AVD 我可以在该 AVD 中运行我的应用程序 几秒钟后它会闪烁并抛出一些像这样的错误 02 05 12 06 39 809 E EGL emulation 829
  • 将泛型参数转换为整数或从整数转换

    我想编写通用类 旨在与内置类型一起使用 例如byte and ushort 在内部计算中 我需要将泛型类型转换为整数 然后再转换回泛型类型 我找到了编译此类代码的方法 例如 class Test