草庐IT

temp_array

全部标签

c# - 对类实例而不是 float 进行排序时 Array.Sort() 性能下降

如果对float进行排序,C#中的Array.Sort非常快,我需要一些额外的数据来处理这些float,所以我创建了一个简单的类并扩展了IComparable接口(interface)。现在Array.Sort突然慢了3-4倍,这是为什么?我该如何提高性能?演示代码:usingSystem;usingSystem.Diagnostics;usingSystem.Linq;namespaceSortTest{classProgram{staticvoidMain(string[]args){intarraySize=10000;intloops=500;doublenormalFloat

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

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

c# - 简单的linq问题: using linq to get an array of properties

假设我们有一个简单的类publicclassFoo{publicstringFooName;}现在我们想对其做一些简单的工作。publicvoidSomeCallerMethod(ListlistOfFoos){string[]fooNames=listOfFoo.//Whattodohere?}如果我什至知道调用什么方法,我可能就能找到其余的部分。 最佳答案 您想将您的类列表转换为字符串数组。理想的方法是Select,它对可枚举对象的每个元素进行操作,并根据您返回的类型构建一个新的可枚举对象。您需要将lambda表达式放入返回名称

c# - 专门在 C# 中获取系统 TEMP 路径

我正在使用System.IO.Path.GetTempPath()方法从环境变量中检索临时文件夹。但是,我发现这将始终返回当前用户的TEMP或TMP变量(如果存在),否则它将返回系统TEMP或TMP变量。有没有办法始终获取系统TEMP变量?我知道SO上关于Path.GetTempPath()方法的其他几个问题,其中答案引用了MSDN中关于此方法如何决定返回内容的文档。我从MSDN了解到此方法的行为,我想问是否有另一种方法可以确保我获得系统临时文件夹。 最佳答案 也许你正在寻找Environment.GetEnvironmentVar

c# - System.Array 背后的 secret

我们知道System.Array是一个抽象类,不管DataType[]我们使用运行时以某种方式为我们创建了一些具体的实现(尽管很模糊)。考虑以下代码段。int[]someInts={1,2,3,4};IListcollection=someInts;collection.Clear();collection.Clear()抛出NotSupportedException,那里没有什么奇怪的。当我查看“StackTrace”时,我惊讶地发现它显示了一些奇怪的“类型”SZArrayHelper在调用堆栈的顶部。堆栈跟踪:atSystem.SZArrayHelper.Clear[T]()//N

c# - 为什么 C# Array.BinarySearch 这么快?

我在C#中实现了一个非常简单的binarySearch实现,用于在整数数组中查找整数:二分查找staticintbinarySearch(int[]arr,inti){intlow=0,high=arr.Length-1,mid;while(lowarr[mid])low=mid+1;elsereturnmid;}return-1;}将它与C#的原生Array.BinarySearch()进行比较时,我可以看到Array.BinarySearch()快两倍以上作为我的功能,每一次。MSDNArray.BinarySearch:Searchesanentireone-dimensiona

c# - C# : generate a list of two dimension arrays with the same shape 中的 FsCheck

假设我正在编写一些视频分析代码。这是视频类的简化版本:publicclassVideo{publicreadonlyintWidth;publicreadonlyintHeight;publicreadonlyListFrames;publicVideo(intwidth,intheight,IEnumerableframes){Width=width;Height=height;Frames=newList();foreach(varframeinframes){if(frame.GetLength(0)!=height||frame.GetLength(1)!=width){thr

C#:Array.CreateInstance:无法将类型 [*] 的对象转换为类型 []

我想通过调用在c#中创建一个非零下界一维数组Array.CreateInstance(typeof(int),newint[]{length},newint[]{lower});返回数组的类型不是int[],而是int[*]。谁能详细说明这是什么意思?我希望能够将这个数组返回给调用者,例如,int[]GetArray(){...}谢谢。 最佳答案 是的,这是一个陷阱!向量和一维数组之间存在差异。int[]是一个向量。向量(如int[])必须从0开始。否则,您必须将其命名为Array。例如://andyes,thisisdoingit

c# - DirectoryExists ("c:temp\\foo") 当目录不存在时返回真!

好吧,我被一些看起来有点奇怪的东西咬住了。我意识到我没有正确格式化路径名是我的错误,但我希望以下测试返回false,尤其是因为该文件夹不存在。DirectoryExists("C:temp\\foo")但实际上,即使目录不存在,它也会返回true!代码应该是DirectoryExists("C:\\temp\\foo")有人可以向我解释为什么我从第一个版本中得到误报吗?我希望它可能返回false或抛出异常,但不会返回true。 最佳答案 此API运行正常,但在您第一次遇到此行为时通常会出现错误。省略卷号后的\具有特殊语义。它将用传递

c# - Array.Copy 在 C# 中是如何实现的?

我尝试使用ILSpy在C#中查看Array.Copy的实现,但它没有向我展示实现本身。我写了一个简单的基准测试,Array.Copy与一个简单的for循环来复制数据。Array.Copy更快。如何更快地实现?谢谢,谢伊 最佳答案 反汇编Array类将使您得到这个声明:[MethodImpl(MethodImplOptions.InternalCall),SecurityCritical,ReliabilityContract(Consistency.MayCorruptInstance,Cer.MayFail)]internalst