草庐IT

可变数组

全部标签

c# - .NET 将简单数组转换为列表泛型

我有一个任意类型的数组T(T[]),我想将其转换为通用列表(List)。除了创建通用列表、遍历整个数组并将元素添加到列表中之外,还有其他方法吗?现状:string[]strList={"foo","bar","meh"};ListlistOfStr=newList();foreach(stringsinstrList){listOfStr.Add(s);}我的理想情况:string[]strList={"foo","bar","meh"};ListlistOfStr=strList.ToList();或者:string[]strList={"foo","bar","meh"};List

c# - 将数组划分为子序列数组的数组

我有一个字节数组:byte[]bytes;//manyelements我需要将它分成X元素的字节数组的子序列。例如,x=4。如果bytes.Length不乘以X,则将0添加到最后一个子序列数组,因此所有子序列的长度必须是X。Linq可用。PS:我的尝试staticvoidMain(string[]args){Listbytes=newList(){1,2,3,4,5,6,7,8,9,10,11};intc=bytes.Count/4;for(inti=0;ib=bytes.GetRange(i,4);}}Console.ReadKey();} 最佳答案

C# 检查字符串是否包含字符串数组中的任何匹配项

在C#中检查字符串是否包含字符串数组中的任何匹配项的最快方法是什么?我可以使用循环来完成,但我认为那太慢了。 最佳答案 使用LINQ:returnarray.Any(s=>s.Equals(myString))当然,您可能想要考虑文化和案例,但这是一般的想法。此外,如果相等不是您所说的“匹配”的意思,您始终可以使用“匹配”所需的函数。 关于C#检查字符串是否包含字符串数组中的任何匹配项,我们在StackOverflow上找到一个类似的问题: https://s

c# - 将字符串数组加载到 List<int> 中最优雅的方法是什么?

考虑一个包含数值的字符串数组:string[]intArray={"25","65","0"};将数字加载到List中的最优雅的方法是什么?不使用for或while遍历intArray? 最佳答案 您可以使用Enumerable.Select方法ListintList=intArray.Select(str=>int.Parse(str)).ToList(); 关于c#-将字符串数组加载到List中最优雅的方法是什么?,我们在StackOverflow上找到一个类似的问题:

c# - 用于解析 JSON 对象数组的正则表达式?

我正在尝试将JSON对象数组解析为C#中的字符串数组。我可以从JSON对象中提取数组,但无法将数组字符串拆分为单个对象的数组。我有这个测试字符串:stringjson="{items:[{id:0,name:\"LoremIpsum\"},{id:1,name"+":\"LoremIpsum\"},{id:2,name:\"LoremIpsum\"}]}";现在我正在使用以下正则表达式将项目拆分为单个对象。现在它们是2个独立的正则表达式,直到我用第二个正则表达式解决问题:RegexarrayFinder=newRegex(@"\{items:\[(?[^\]]*)\]\}",Regex

c# - 是否可以在 C# 中扩展数组?

我习惯于向IEnumerable等外部类添加方法。但是我们可以在C#中扩展数组吗?我计划向数组添加一种方法,将其转换为IEnumerable,即使它是多维的。与HowtoextendarraysinC#无关 最佳答案 staticclassExtension{publicstaticstringExtend(thisArrayarray){return"Yes,youcan";}}classProgram{staticvoidMain(string[]args){int[,,,]multiDimArray=newint[10,10,

c# - 如何在不复制的情况下从 char 数组创建字符串?

我有一个非常大的字符数组,我需要将其转换为字符串以便在其上使用正则表达式。但它太大了,当我将它传递给字符串构造函数时,我得到了OutOfMemoryException。我知道字符串是不可变的,因此不应该可以指定它的底层字符集合,但我需要一种无需复制就可以使用正则表达式的方法整个事情。我如何获得该数组?我使用StreamReader从文件中获取它。我知道要读取的内容的起始位置和长度,Read和ReadBlock方法需要我提供一个char[]缓冲区。所以这里是我想知道的事情:有没有办法指定字符串的底层集合?(它甚至将其字符保存在数组中吗?)...或直接在字符数组上使用正则表达式?...或者

c# - 自动生成不可变类和匹配的构建器类

有哪些工具/库可以采用结构并自动生成不可变包装器以及用于增量构建新实例的“构建器”类?示例输入:structFoo{publicintapples;publicintoranges;publicFooClone(){return(Foo)base.MemberwiseClone();}}示例输出:publicclassImmutableFoo//couldprobablybeastruct{privateFoosnapshot;internalImmutableFoo(Foovalue){this.snapshot=value;}publicFooBuilderBuilder(){re

c# - 我可以告诉 CLR 通过引用在 AppDomain 之间编码(marshal)不可变对象(immutable对象)吗?

当在.NET中的AppDomain之间编码(marshal)对象时,CLR将序列化对象(如果它具有Serializable属性)或生成一个代理(如果它继承自MarshalByRef)然而,对于字符串,CLR只会将对字符串对象的引用传递到新的AppDomain中。CLR仍然确保完整性,因为.NET字符串是不可变的,并且第二个AppDomain对字符串的任何更改都不会影响原始对象。这让我想到了我的问题:有没有办法告诉CLR我的自定义类型是不可变的,并且当用于远程处理时,它应该只传递对对象的引用,就像它对字符串类所做的那样? 最佳答案 编

c# - 通过比较它们的序列化字节数组来比较一个类的两个实例是否可靠?

给定一个类的两个实例,通过先将它们序列化然后比较字节数组(或可能的数组哈希)来比较它们是否是一种良好且可靠的做法。这些对象可能具有复杂的层次结构属性,但序列化应根据需要深入。通过比较,我的意思是确保原始类型的所有属性具有相等值、复杂类型的属性具有原始类型的相等属性等的过程。至于集合属性,它们应该彼此相等:相等的元素,相同的位置:{'a','b','c'}!={'a','c','b'}{newCustomer{Id=2,Name="abc"},newCustomer{Id=3,Name="def"}}!={newCustomer{Id=3,Name="def"},newCustomer{