草庐IT

可变数组

全部标签

c# - 如何在 C# Unity 中使用带有二维数组的 C 结构

所以我有一个具有以下结构的CAPItypedefstructmat4f_{floatm[4][4];}mat4f;它作为参数传递给我的一个API函数:voidmyFunction(constmat4fmatrix);我正在使用dll将此函数导出到Unity中的C#:[DllImport("mylib")]privatestaticexternvoidmyFunction(mat4fmatrix);我的问题是,我应该将相应的C#结构设为什么?现在我有以下内容:[StructLayout(LayoutKind.Sequential)]publicstructmat4f{publicfloa

c# - 在 C# 中初始化多维数组(与其他数组)

在C#中,可以使用常量初始化多维数组,如下所示:Object[,]twodArray=newObject[,]{{"00","01","02"},{"10","11","12"},{"20","21","22"}};我个人认为用硬编码常量初始化数组对于测试练习以外的任何事情都是无用的。无论如何,我迫切需要做的是使用现有数组如上所述初始化一个新的多维数组。(它们具有相同的项目计数,但内容当然只在运行时定义)。我想做的一个示例是。Object[]first=newObject[]{"00","01","02"};Object[]second=newObject[]{"10","11","1

c# - 在 C# 中实现稀疏数组/将整数映射到特定桶/范围数字的最快方法

我最初的问题是我需要在C#中实现一个非常快速的稀疏数组。最初的想法是使用正常的Dictionary并将其包装在我自己的类中以仅公开TValue类型参数。事实证明这很慢。所以我的下一个想法是将所需范围(UInt32.MinValue到UInt32.MaxValue)中的每个整数映射到某个大小的桶并使用它。所以我正在寻找一种将无符号整数X映射到桶Y的好方法,例如:将数字0-1023映射到8个不同的桶,每个桶包含128个数字,0-127、128-255。但如果有人有更好的方法在C#中实现快速稀疏数组,那也将不胜感激。 最佳答案 我也注意到

c# - 将数组从 .Net 应用程序传递到 Oracle 存储过程

我需要将数组从C#.net应用程序传递到oracle存储过程。任何人都可以让我知道如何去做吗?另外,在将输入参数传递给存储过程时,我在C#中使用哪种OracleType类型?仅供引用,我在我的C#应用程序中使用System.Data.OracleClient。谢谢。 最佳答案 吉米,System.Data.OracleClient不支持数组。http://social.msdn.microsoft.com/Forums/en-US/adodotnetentityframework/thread/57a59fba-09e2-46cb-

c# - byte[] array to struct with variable length 数组

我正在从套接字接收一个字节数组,字节的结构只是一个固定宽度字符串的大字符数组。在某些情况下,最后一个字段是动态的(而不是固定长度),我正在尝试将字节编码为结构。我读过可变长度的char数组需要是IntPtr,但我还没有弄清楚如何用剩余的字节对其进行编码。我还在一些文章中读到我可能需要第二个结构,但仍然无法弄清楚如何正确地编码它。这是一个这样的site在结构中处理可变长度字符数组的正确方法是什么?结构:[StructLayout(LayoutKind.Sequential,CharSet=CharSet.Ansi)]publicstructHeader{#regionprivatemem

c# - 如何在 C# 中 reshape 数组

我在c#中有一个3D字节数组,我从位图中读取了它:byte[w,h,3]将此数组reshape为2D(线性)形式的最简单且性能更友好的方法是什么?byte[w*h,3]换句话说,我想保留channel(特征)的数量,但保持线性(而不是方形)让我试着说明输入和期望的输出:输入:|(r1,g1,b1)(r2,g2,b2)(r3,g3,b3)||(r4,g4,b4)(r5,g5,b5)(r6,g6,b6)||(r7,g7,b7)(r8,g8,b8)(r9,g9,b9)|注意arr[0,0,0]=r1,arr[0,0,1]=g1,arr[0,0,2]=b1,等等。和输出:|(r1,g1,b1)

c# - Marshall 结构数组

我花了很多时间寻找解决方案,但仍然没有找到。我有2个类:[StructLayout(LayoutKind.Sequential)]publicclassResult{publicintNumber;[MarshalAs(UnmanagedType.ByValTStr,SizeConst=4)]publicstringName;publicintSize;}[StructLayout(LayoutKind.Sequential)]publicclassCoverObject{publicintNumOfResults;[MarshalAs(UnmanagedType.ByValArray

c# - 将对象数组的对象数组转换为对象的二维数组

我有一个第三方库返回一个对象数组的对象数组,我可以将其填充到一个对象[]中:object[]arr=myLib.GetData(...);结果数组由object[]条目组成,因此您可以将返回值视为某种记录集,外部数组表示行,内部数组包含字段值,其中某些字段可能未填充(a锯齿状阵列)。要访问我必须强制转换的各个字段:inti=(int)((object[])arr[row])[col];//accessafieldcontaininganint现在我很懒,我想像这样访问元素:inti=(int)arr[row][col];为此,我使用以下Linq查询:object[]result=myL

c# - 结构中 C# 固定 bool 数组的大小和对齐方式是什么?

在做P/Invoke的时候,数据布局的匹配很重要。我们可以通过使用一些属性来控制结构的布局。例如:structMyStruct{publicboolf;}给出大小为4。虽然我们可以告诉编译器将其设为1字节bool以匹配bool的C++类型:structMyStruct{[MarshalAs(UnmanagedType.I1)]publicboolf;}大小为1。这些是有道理的。但是当我测试固定的bool数组时,我感到困惑。unsafestructMyStruct{publicfixedboolfs[1];}给出4个字节的大小。和unsafestructMyStruct{publicfi

c# - 两个排序整数数组的快速交集

我需要找到两个已排序整数数组的交集,而且速度非常快。现在,我正在使用以下代码:inti=0,j=0;while(i不幸的是,完成所有工作可能需要数小时。如何更快地完成?我找到了thisarticle使用SIMD指令的地方。是否可以在.NET中使用SIMD?你在想什么:http://docs.go-mono.com/index.aspx?link=N:Mono.Simd单片机http://netasm.codeplex.com/NetASM(注入(inject)asm代码到托管)还有类似http://www.atrevido.net/blog/PermaLink.aspx?guid=ac