Tag: 数组

使用LINQ从String数组中删除“NULL行”

如何使用LINQ从String数组中删除“NULL行”? 采用这种结构( String[,] ): “Hello”, “World”, “Foo”, “Bar” null, null, null, null null, null, null, null “Hello”, “World”, “Foo”, “Bar” “Hello”, “World”, “Foo”, “Bar” null, null, “Foo”, “Bar” 应删除第一行之后的两行。 结构中的最后一行不应该。

C#:将通用指针转换为数组

我想将一个byte*转换为byte* byte[] ,但我也希望有一个可重用的函数来执行此操作: public unsafe static T[] Create(T* ptr, int length) { T[] array = new T[length]; for (int i = 0; i < length; i++) array[i] = ptr[i]; return array; } 不幸的是我收到编译器错误,因为T可能是“.NET托管类型”,我们无法指向那些 。 更令人沮丧的是,没有generics类型约束可以将T限制为“非托管类型”。 是否有内置的.NET函数来执行此操作? 有任何想法吗?

删除多次出现的数组元素

Array.Distinct()留下不同的元素。 如何从Array中删除所有重复元素, 包括原始元素? 例如,给定此输入数组: { Dog, Cat, Mouse, Dog, Dog, Parrot, Mouse, Hound } 我想得到这个输出: { Cat, Parrot, Hound }

值等于数组中的任何值?

只是想知道是否有任何方法来检查值A是否等于数组中的任何值(不使用大循环函数) – 有点像“Where”函数。 例如 if (DataRow[column1value] == Array A[]) { //do… } 干杯!

将值与数组进行比较并获得最接近的值

我是C#的新手,我正在努力学习这门语言。 你们能给我一个提示,我可以比较一个数组,从中选择最低值吗? 喜欢: Double[] w = { 1000, 2000, 3000, 4000, 5000 }; double min = double.MaxValue; double max = double.MinValue; foreach (double value in w) { if (value max) max = value; } Console.WriteLine(” min:”, min); 给我w的最低值,我现在怎么比较? 如果我有: int p = 1001 + 2000; // 3001 我如何比较数组列表,并发现(3000)值是我的“搜索值”最接近的值?

数组和线程安全访问

如果我有一个可以/将在任何给定时间点被多个线程访问的数组,究竟是什么导致它是非线程安全的,以及为确保该数组在大多数情况下是线程安全所采取的步骤情况呢? 我已经在互联网上广泛了解并且发现很少或没有关于这个主题的信息,一切似乎都是特定的场景(例如,这个数组,这两个线程通过这两个线程安全地访问,然后开启,等等)。 我真的希望有人可以回答我在顶部提出的问题,或者是否有人可以指出一份解释所述项目的好文件。 编辑:浏览MSDN后,我找到了ArrayList类。 使用synchronize方法时,它返回给定列表的线程安全包装器。 在列表中设置数据时(即list1 [someNumber] = anotherNumber;)包装器会自动处理锁定列表,还是需要锁定它?

矩阵到数组c#

这将是转换平方矩阵的最有效方法 1 2 3 4 5 6 7 8 9 成 [1 2 3 4 5 6 7 8 9] 在c#中 我在做 int[,] array2D = new int[,] { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 } }; int[] array1D = new int[9]; int ci=0; for (int i = […]

用C#读取ini文件

我正在尝试读取具有以下格式的ini文件: SETTING=VALUE SETTING2=VALUE2 我目前有以下代码: string cache = sr.ReadToEnd(); string[] splitCache = cache.Split(new string[] {“\n”, “\r\n”}, StringSplitOptions.RemoveEmptyEntries); 这给了我一个设置列表,但是,我想要做的是把它读成字典。 我的问题是,有没有办法在不迭代整个数组并手动填充字典的情况下执行此操作?

从C ++到C#的数组

我试图将一个双数组(它实际上是一个std :: vector,但转换后转换)从c ++ dll传递到ac#script(unity)。 使用此处概述的方法https://stackoverflow.com/a/31418775 。 我可以在我的控制台上成功地获得arrays打印的大小但是我无法使用“CoTaskMemAlloc”来为arrays分配内存,因为我使用Xcode并且它似乎没有COM。 对于更多的背景,这个数组是GUI控件的一部分,c ++创建它并且用户使用c#GUI进行编辑 – 因此计划是在编辑时将数组传递回c ++。 C++ code extern “C” ABA_API void getArray(long* len, double **data){ *len = delArray.size(); auto size = (*len)*sizeof(double); *data = static_cast(CoTaskMemAlloc(size)); memcpy(*data, delArray.data(), size); } C# code [DllImport(“AudioPluginSpecDelay”)] private static extern void getArray (out int length,[MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 2)] out double[] array); int […]

将类型为T的数组转换为类型I的数组,其中T在C#中实现I

我试图在C#中完成一些我在Java中轻松完成的事情。 但有点麻烦。 我有一个未定义数量的T类型的对象数组.A实现了一个接口I.我需要一个I的数组,它是所有数组中所有值的总和。 假设没有数组将包含相同的值。 这个Java代码有效。 ArrayList list = new ArrayList(); for (Iterator iterator = arrays.iterator(); iterator.hasNext();) { T[] arrayOfA = iterator.next(); //Works like a charm list.addAll(Arrays.asList(arrayOfA)); } return list.toArray(new T[list.size()]); 但是这个C#代码没有: List list = new List(); foreach (T[] arrayOfA in arrays) { //Problem with this list.AddRange(new List(arrayOfA)); //Also doesn’t work list.AddRange(new List(arrayOfA)); } return list.ToArray(); […]