在 C# 中传递二维数组的一维

2023-12-15

我已经从 C 迁移到 C#。 我有一个接受数组的函数。我想将二维数组的一维传递给此函数。

C 代码将是:-

void array_processing(int * param); 

void main()
{
  int Client_ID[3][50];
  /* Some 
     Processing 
     which fills 
     this array */
    array_processing(&Client_ID[1]);
}

现在,当我想在 C# 中做同样的事情时,如何传递这个数组? 函数定义如下:-

private void array_processing(ref int[] param);

数组将被声明为:-

int[,] Client_ID = new int[3,50];

现在我怎样才能通过Client_ID[1]到函数array_processing()??

通过做array_processing ( ref Client_ID[1])喊“索引数量错误”!


你真的不能那样做。 C# 对于数组不太外向,并且阻止您进行类似 C 的操作。这是一件好事。

您有多种选择:

  1. 创建一个一维数组并将二维行复制到其中。
  2. 使用锯齿状数组 - 数组的数组,这更像是 C 允许您做的事情。
  3. 有一个 array_processing 重载,它接受一个 2D 数组和一个行号。

  4. If you really想要将 2D 行作为 1D 数组访问,您应该创建一个“RowProxy”类,该类将实现 IList 接口并让您仅访问一行:

    class RowProxy<T>: IList<T>
    {
        public RowProxy(T[,] source, int row)
        { 
           _source = source;
           _row = row;
        }
    
        public T this[int col]
        {
            get { return _source[_row, col]; } 
            set { _source[_row, col] = value; }
        }
    
        private T[,] _source;
        private int _row;
    
        // Implement the rest of the IList interface
    }
    
  5. 使用 lambda 表达式会丢失数组语义,但相当酷:

    var ClientId = ...;
    
    var row_5_accessor = (c=>ClientId[5, c]);
    

    您可以使用 row_5_accessor 作为函数,row_5_accessor(3)会给你ClientId[5, 3]

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

在 C# 中传递二维数组的一维 的相关文章

  • URL 的正则表达式

    我已经编写了正则表达式来验证 URL 它可以是这样的 example com www example com http www example com http www example com https www example com h
  • 请求的资源不支持 HTTP 方法“GET”

    我的路线配置正确 并且我的方法具有装饰标签 我仍然收到 请求的资源不支持 HTTP 方法 GET 消息 System Web Mvc AcceptVerbs GET POST System Web Mvc HttpGet public st
  • 除了第一列之外,Gridview 行可点击?

    我使用以下代码使 gridview 的整行可单击 protected void gridMSDS RowDataBound object sender GridViewRowEventArgs e if e Row RowType Data
  • ASP .NET MVC 5 - 客户地址一对一关系

    我在这里查看了论坛 实际上发现了一些类似的问题 但不是相同的问题 类似的解决方案没有给我正确的答案 我正在使用实体框架和代码优先方法来处理 ASP NET MVC 5 我想建立客户 gt 地址一对一关系的模型 我建模的是 客户等级 publ
  • 将 Visual Studio 2012 C++ 单元测试项目链接到 exe 会导致访问冲突

    我从现有的整体 exe 本机 Visual Studio 2012 项目开始 我想添加一个本机单元测试项目 根据http msdn microsoft com en us library hh419385 aspx objectRef ht
  • 将 Uploadify 与 Sharepoint 和 .net 结合使用

    我在共享点页面上有一些由 JQuery 生成的 html 我想在这个 html 中使用 uploadify 将文件上传到服务器 亚历山大 https stackoverflow com users 25427 alexander gyosh
  • 混合 VS2012 平台工具集

    我们正在从 VS2005 切换到 VS2012 update 2 我们正在构建大量 主要是控制台 本机 C 无 MFC ATL 可执行文件 它们使用几个常见的静态链接库 这些可执行文件主要在 Win7 计算机上运行 但有些也部署在较旧的 X
  • 输入缓冲区刷新

    考虑下面的代码 include
  • tcmalloc/jemalloc 和内存池之间有什么区别(以及选择的理由)?

    tcmalloc jemalloc是改进的内存分配器 还引入了内存池以更好地分配内存 那么它们之间有什么区别以及在我的应用中如何选择它们呢 这取决于您的程序的要求 如果您的程序有更多的动态内存分配 那么您 需要从可用的分配器中选择一个内存分
  • 在 C# 4.0 中,是否可以从泛型类型参数派生类?

    我一直在尝试这个 但我似乎无法弄清楚 我想做这个 public abstract class SingletonType
  • C++ 静态工厂构造函数

    我正在进行模拟 它需要创建多个相当相似的模型 我的想法是有一个名为 Model 的类并使用静态工厂方法来构造模型 例如 模型 createTriangle or 模型 createFromFile 我从以前的 java 代码中汲取了这个想法
  • 如何定义 Swagger UI 参数的默认值?

    我已将 Swagger Swashbuckle 集成到 NET Core 2 2 API 项目中 一切都很好 我的要求纯粹是为了方便 考虑以下 API 方法 public Model SomeEstimate SomeRequest req
  • “sizeof”对不完整类型列表结构 C 的无效应用

    我正在尝试实现一种处理页面错误的替换算法 因此 我尝试使用 malloc 创建一个循环链表 但出现以下错误 无效的应用程序sizeof to incomplete typepageInMemory 以下是代码 typedef struct
  • std::regex 转义正则表达式中使用的特殊字符

    我是字符串来创建一个std regex FILE 作为单元测试的一部分 检查一些打印文件名的异常输出 在 Windows 上失败并显示 regex error error escape 表达式包含无效的转义字符或尾随转义 因为 FILE 宏
  • 更改预处理到文件后出现错误 1 ​​错误 LNK1104

    我必须使用预处理器 所以我改变了 配置属性 gt C gt 预处理器 gt 预处理为文件 gt 是 并得到错误 错误 1 错误 LNK1104 无法打开文件 Debug asnreal obj 这个问题的解决办法 我必须在 lib 文件的路
  • C中的pipe()和fork()

    我需要创建两个子进程 一个子进程需要运行命令 ls al 并将其输出重定向到下一个子进程的输入 而下一个子进程又将对其输入数据运行命令 sort r n k 5 最后 父进程需要读取该数据 已排序的数据 并将其显示在终端中 终端中的最终结果
  • TypeScript 中 C# 类虚拟成员的等效项

    因此 在 C 中 当我创建模型类和延迟加载内容时 我会执行以下操作 public int User ID get set public int Dept ID get set 然后在我的班级稍远一点的地方 我像这样弹出我的虚拟 public
  • 任何浮点密集型代码是否会在任何基于 x86 的架构中产生位精确的结果?

    我想知道使用浮点运算的 C 或 C 代码是否会在任何基于 x86 的体系结构中产生位精确的结果 无论代码的复杂性如何 据我所知 自 Intel 8087 以来的任何 x86 架构都使用准备处理 IEEE 754 浮点数的 FPU 单元 并且
  • MsBuild 在 Visual Studio Online 上找不到恢复的 NuGet 包

    我尝试构建一个存储在 Visual Studio Online 上的外部 GIT 存储库中的解决方案 它有以下步骤 1 Git 恢复 有效 2 NuGet 恢复 有效 3 构建 不起作用 查看日志时我的第一个猜测是 MsBuild 没有查找
  • 从哪里开始阅读 SQLite 源代码? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我想了解sqlite是如何实现的 并且 想阅读源代码 我已经下载了源代码 我应该开始查看代码的哪一部分 SQLite文档页 http

随机推荐

  • 在 powershell 中将 XML 转换为 xlsx

    我在网上找到了一些powershell命令将xlsx文件转换为xml文件 这很好用 但是我得到的 xml 会被稍微操纵 之后我需要将其转换回标准 xlsx 文件 使用以下命令生成的 xml 如何将其转换回 xlsx 文件 Thanks xl
  • OpenSSL 客户端基于证书的身份验证失败

    我正在尝试运行以下命令 root localhost certs openssl s client connect localhost 7043 cert opt openssl 1 0 0a ssl certwork client cli
  • ng-repeat 与空对象

    我收到 中继器重复 错误 我在某处读到可以通过索引进行跟踪 但是一旦我这样做 我的所有对象标题和描述值就会变得重复 我需要为每个步骤定义唯一的标题 描述和资产数组 我怎样才能做到这一点 var stepTemplate assets sco
  • Android JET 文件格式是专有的还是开放的?

    我需要以编程方式为我的 Android 项目从头开始创建 JET 文件 文件格式是否公开 鉴于所有 JET Sonivox 文件均采用 Android 源代码 包括较低级别的 C 文件 应该可以确定其格式 https android goo
  • 如何使用 pandas 重塑每第 n 行的数据?

    我需要帮助来重塑 csv 文件中的数据 该文件包含超过 10000 行 每行 10 行 例如我有这个 csv 文件 Ale Brick 1 ww 2 ee 3 qq 3 xx 5 dd 3 gg 7 hh 8 tt 9 yy 0 uu 1
  • 当我调整 Jframe 大小时如何停止 auto-repaint()

    我还在学习Java 如果有人能帮助我我会很高兴 抱歉英语不好 我是西班牙人 我正在制作一款瓷砖游戏 该游戏使用经典的 游戏循环 将引擎限制在 60fps 循环休眠然后调用repaint 这很好用 但 问题是 当 JFrame 调整大小或最大
  • 模拟连接在 Couchbase 中如何工作?

    我有一份相互依赖的文件 第一的 doctype closed auctions seller person person11304 buyer person person0 itemref item item1 price 50 03 da
  • 如何一次又一次地调用一个方法,直到它返回包含“None”的“Future”值

    给定一个返回 a 的方法Future像这样 def remove id String Future Option User Future removes and returns the user identified by id 我如何一次
  • 使用 ajax 和 JavaScript 发布到 GitHub v3 API 失败并出现 HTTP 404

    我正在尝试按照文档将 blob 发布到 JavaScript jQuery 中的 GitHub APIhttps developer github com v3 git blobs create a blob 但是我不断收到 404 请求
  • 如何通过 PHP 将 .xls 转换为 .pdf?

    我在谷歌上搜索了很多小时 但还没有找到解决方案 我需要将 xls 文件转换为 pdf 文件 怎么做 我找到了这个http www aspose com 但似乎它没有PHP API 只有 NET和JAVA 感谢您的每一个建议 PHPExcel
  • 上传apk到市场时,apk必须使用与之前版本相同的证书进行签名

    我已经创建了一个应用程序并发布在android市场上 现在我想发布它的第二个版本 我想澄清几件事 我保留了相同的包名称 我没有以前的密钥库 因为我更改了 Windows 因此删除了密钥库 并且我没有该密钥库的备份 现在我应该有什么方法可以从
  • 在 Xcode 6 中调整测量中心

    在新的 Xcode 6 中 缺少更改按钮测量中心的功能 在 Xcode 5 中 https i stack imgur com 3fCfY jpg Xcode 6 https i stack imgur com 46YTZ jpg 当我将一
  • 使用带有 LAME 的 NDK 的内置函数警告的不兼容隐式声明

    我正在尝试按照位于以下位置的教程进行操作 http developer samsung com android technical docs Porting and using LAME MP3 on Android with JNI 其要
  • 选择 2 下拉列表但允许用户输入新值?

    我想要一个包含一组值的下拉菜单 但也允许用户 选择 此处未列出的新值 我看到select2如果您使用它 则支持此功能tags模式 但是有没有办法在不使用标签的情况下做到这一点 The 很好的答案由 提供 fmpwizard适用于 Selec
  • 检测 div 中的滚动结束

    我有一个包含许多博客文章的动态网站 我想首先加载四个帖子 然后在滚动到末尾时加载另外四个帖子 我知道如何在后端处理它 但我在前端遇到问题 我已将 html 和 body 的高度设置为 100 因此窗口上的滚动事件不起作用 作为解决方法 我决
  • 使用 std::bind 时从 std::function 获取函数指针

    我正在尝试使用std function和这个结合std bind 但我遇到了一些问题 这有效 include
  • 如何在脚本中处理MySQL时区

    我正在开发一个移动应用程序 从应用程序调用 Web 服务 该服务根据模式 mode xx 运行不同的查询 在其中一些查询中 我使用日期函数 例如 DATE NOW MySQL数据库中存储的数据存储在GMT 7 加拿大山地时间 我尚未为此网络
  • 在python 2.6中创建字典的字典

    我在 python2 7 中有一行代码生成空字典的字典 values 0 1 2 4 5 8 value dicts x for x in values 在 python2 6 上运行时会引发语法错误 我可以使用 for 循环做同样的事情
  • Rundeck 未设置环境变量以使用不同的 ssh 端口进行远程执行

    Rundeck 将传递给作业的所有选项设置为环境变量 例如 RD OPTION 但当作业在具有不同 ssh 端口的远程节点中执行时 它不会设置这些变量 脚本成功登录远程节点 但环境变量不存在 请帮我提供解决方案 工作定义示例
  • 在 C# 中传递二维数组的一维

    我已经从 C 迁移到 C 我有一个接受数组的函数 我想将二维数组的一维传递给此函数 C 代码将是 void array processing int param void main int Client ID 3 50 Some Proce