Tag: arrays

具有负索引的数组

我有一个数组,我用它来存储我正在进行的游戏的地图数据。 MyMapType[,,] map; 我使用固定数组而不是Collection的原因是因为固定数组的工作速度要快得多。 现在我的问题是,我想支持游戏中的负z级别。 所以我希望能够访问负面索引。 如果这是不可能的,我想到了一对其他的解决方案。 我认为可能的解决方案是将地面级别作为一些任意数字(比如10),任何小于10的都可以被认为是负面的。 但如果它不使用,这不会使数组大10倍吗? 我考虑的另一个解决方案是“滚动我自己的”,你有一个2D数组的字典,其中Z级保持在List中作为索引。 但这是更多的工作,我不确定它是否缓慢。 总结一下 – 创建支持负索引的数组的任何方式? 如果没有 – 是否有一种“模仿”这种行为的干净方式,而不会牺牲太多的CPU时间或RAM – 注意这些游戏地图可能会变得很大并且需要不断访问。

在C#中删除2D字符串数组的行

我正在制作一个将数据存储在2D数组中的程序。 我希望能够从这个数组中删除行。 我无法弄清楚为什么这段代码不起作用: for (int n = index; n < a.GetUpperBound(1); ++n) { for (int i = 0; i < a.GetUpperBound(0); ++i) { a[i, n] = a[i, n + 1]; } } 有人可以帮帮我吗? 我希望它删除一行并将其下面的所有行拖放到一个地方。 谢谢!

如何通过类实例的属性值对包含类对象的数组进行排序?

可能重复: 如何通过C#中的特定字段对对象数组进行排序? 给出以下代码: MyClass myClass; MyClassArray[] myClassArray = new MyClassArray[10]; for(int i; i < 10; i++;) { myClassArray[i] = new myClass(); myClassArray[i].Name = GenerateRandomName(); } 最终结果可能如下所示: myClassArray[0].Name //’John’; myClassArray[1].Name //’Jess’; myClassArray[2].Name //’James’; 你将如何按字母顺序根据myClass.Name属性对MyClassArray []数组进行排序,这样数组最终会如下所示: myClassArray[0].Name //’James’; myClassArray[1].Name //’Jess’; myClassArray[2].Name //’John’; *编辑 :我正在使用VS 2005 / .NET 2.0。

如何将常规数组写入CSV文件?

假设我在C#中有一个对象数组,我想将它写成CSV格式的文件。 假设每个对象都有一个ToString()方法,这就是我想要打印的方法。 目前我正在使用此代码: public static void dumpArray(Array arr, string fileName) { using (System.IO.StreamWriter file = new System.IO.StreamWriter(fileName)) { foreach (Object obj in arr) { file.Write(obj.ToString()+”,”); } } } C#框架中是否有任何内置,或者您认为有更好的方法吗?

从IntPtr获取struct数组

我有一些像这样的结构 struct MyStruct { public int field1; public int field2; public int field3; } 我有指向此结构数组的指针。 所以,我需要从这个指针获取数组。 我试图使用Marshal.PtrToStructure,但我有内存读取错误。 这是我的方法: public MyStruct[] GetArrayOfStruct(IntPtr pointerToStruct, int length) { var sizeInBytes = Marshal.SizeOf(typeof(TCnt)); MyStruct[] output = new MyStruct[length]; for (int i = 0; i < length; i++) { IntPtr p = new IntPtr((pointerToStruct.ToInt32() + i * sizeInBytes)); output[i] = […]

C#中数组的神奇之处是什么?

int[] a = new int[5]; string[] b = new string[1]; a和b的类型都inheritance自抽象的System.Array ,但是内置库中没有真正的类(似乎有一些运行时类型,你找不到int[]的类型defination类int[] )。 你能告诉我编译时会发生什么吗? 为什么他们(c#团队)制作这个设计(我的意思是为什么它不像Array ,而是他们使用带编译器魔法的抽象类)?

获取对数组内部结构的引用

我想修改一个结构的字段,该结构在一个数组内,而不必设置整个结构。 在下面的示例中,我想在数组中设置元素543的一个字段。 我不想复制整个元素(因为复制MassiveStruct会损害性能)。 class P { struct S { public int a; public MassiveStruct b; } void f(ref S s) { sa = 3; } public static void Main() { S[] s = new S[1000]; f(ref s[543]); // Error: An object reference is required for the non-static field, method, or property } } 有没有办法在C#中做到这一点? 或者我总是要从数组中复制整个结构,修改副本,然后将修改后的副本放回到数组中。

数组的大小是否受int的上限(2147483647)约束?

我正在做一些Project Euler练习,我遇到了一个场景,我想要的数组大于2,147,483,647(C#中int的上限)。 当然这些是大型arrays,但是,例如,我不能这样做 // fails bool[] BigArray = new BigArray[2147483648]; // also fails, cannot convert uint to int ArrayList BigArrayList = new ArrayList(2147483648); 那么,我可以拥有更大的arrays吗? 编辑:这是阿特金的筛子 ,你知道,所以我只想要一个非常大的:D

无法反序列化当前的JSON数组(例如)

我正在尝试阅读我的JSON结果。 这是我的RootObject public class RootObject { public int id { get; set; } public bool is_default { get; set; } public string name { get; set; } public int quantity { get; set; } public string stock { get; set; } public string unit_cost { get; set; } } 这是我的JSON结果 [{“id”: 3636, “is_default”: true, “name”: […]

JSON反序列化 – 使用JSON.NET将数组索引映射到属性

我想将二维数组反序列化为.net对象的集合。 原因是,我的用户可以更容易地在输入文件中使用数组语法。 所以我只想将数组的索引映射到我的目标类型的特定属性。 EG用: [ [“John”, “Smith”, “23”], [“Paula”, “Martin”, “54] ] 我会得到一个人的两个实例: public class Person { public string First {get;set;} public string Last {get;set;} public string Age {get;set;} } 其中内部数组的索引0映射到First ,索引1映射到Last ,索引2映射到Age ; 有没有办法扩展Json.NET,以便我可以在反序列化期间进行映射,以便隐藏实现细节? 我一直在玩一个自定义的JsonConverter但我没有找到关于如何使用它的更多信息。 编辑:具体来说,我不确定JsonConverter是否正确使用,我无法弄清楚如何实现CanConvert以及如何使用传递给ReadJson方法的参数。