草庐IT

可变数组

全部标签

C# 将标志枚举类型变量中的设置标志转换为整数数组

我想出了这段代码,它转换类型为FlagEnumeration的变量中的设置标志,并将设置标志作为整数返回。我想知道这是否是最佳方法。示例枚举:[Flags]enumStatus{None=0x0,Active=0x1,Inactive=0x2,Canceled=0x4,Suspended=0x8}将设置标志转换为我想出的int数组的扩展方法:publicstaticclassExtensions{publicstaticint[]ToIntArray(thisSystem.Enumo){returno.ToString().Split(newstring[]{","},StringSp

c# - 深度不可变类型的惰性初始化是否需要锁?

如果我有一个深度不可变类型(所有成员都是只读的,如果它们是引用类型成员,那么它们也引用深度不可变的对象)。我想在类型上实现一个惰性初始化属性,如下所示:privateReadOnlyCollectionm_PropName=null;publicReadOnlyCollectionPropName{get{if(null==m_PropName){ReadOnlyCollectiontemp=/*dolazyinit*/;m_PropName=temp;}returnm_PropName;}}据我所知:m_PropName=temp;...是线程安全的。我不太担心两个线程同时竞相初始化

c# - 使用数组的 SetValue 方法与 [] 索引器

我注意到数组有SetValue方法,当您只能使用索引器时,这似乎有点不合适。SetValue有什么特殊用途吗?MSDN文章似乎并没有说明SetValue的用途,只是说明了如何使用它。就速度而言,使用哪种方法效率更高? 最佳答案 有时你所拥有的数组只是一个数组。Array类没有索引器,因此在其上设置/获取元素值的最佳方法是通过GetValue和SetValue方法。例如:privatevoidM(Arrayarray){array[0]=5;// 关于c#-使用数组的SetValue方法与

c# - Interlocked.Increment 一个整数数组

这是否保证线程安全/不会产生意外结果?Interlocked.Increment(ref_arr[i]);我的直觉告诉我这不是,即读取_arr[i]中的值不能保证随着实际递增而成为“原子”。如果我认为这是错误的是正确的,我该如何解决这个问题?谢谢。 最佳答案 假设i或_arr没有任何变化,那应该没问题。数组被认为是变量的集合;无论该元素或同一数组中的其他元素发生了什么,互锁增量都应该可以正常工作。 关于c#-Interlocked.Increment一个整数数组,我们在StackOver

c# - 如何通过 LINQ 在二维数组中进行搜索?[version2]

我有一个像这样的2D数组:string[,]ClassNames={{"A","Red"},{"B","Blue"},{"C","Pink"},{"D","Green"},{"X","Black"},};我通过for语句在1nd列中搜索ClassName并在2ndColorName像这样的强>列:stringclassName="A";stringcolor="Black";for(inti=0;i我想使用LINQ而不是for语句来获取className的color。如何将上面的for语句转换为LINQ。 最佳答案 您可以使用Enu

c# - 这两个数组声明有什么区别?

这两个声明似乎是一样的:int[]array1={11,22,33};和int[]array2=newint[]{11,22,33};但是第二个示例中newint[]这部分需要什么?有区别吗? 最佳答案 在这种情况下没有区别-但第一种语法仅在声明变量时可用。来自C#4规范第12.6节:Arrayinitializersmaybespecifiedinfielddeclarations,localvariabledeclarations,andarraycreationexpressions.(“数组初始值设定项”是大括号中的位-数组

c# - JSON 反序列化为构造的 protected setter 数组

我使用NewtonsoftJSON序列化/反序列化我的对象。其中之一包含一个带有protectedsetter的数组,因为构造函数会自行构建数组,并且只有成员会被操作。这可以毫无问题地序列化,但是当涉及到反序列化时,它会被忽略,因为它不是公共(public)的。我尝试了一个自定义转换器,它也没有被调用,因为它不是公开的。这是一个最小化的例子:publicstaticclassTestCoordsDeserialization{privateclassCoords{publicDoubleX{get;set;}publicDoubleY{get;set;}publicDoubleZ{ge

c# - 获取数组中的所有组合

假设我有以下数组:vararr=new[]{"A","B","C"};我如何生成所有可能的组合,只包含两个字符且没有两个相同(例如,AB将与BA相同)。例如,使用上面的数组会产生:ABACBC请注意,此示例已被简化。所需的数组和字符串长度会更大。如果有人能提供帮助,我将不胜感激。 最佳答案 让我们扩展它,也许我们可以看到模式:string[]arr=newstring[]{"A","B","C","D","E"};//arr[0]+arr[1]=AB//arr[0]+arr[2]=AC//arr[0]+arr[3]=AD//arr[

c# - 如何将字节数组转换为邮件附件

我有一个字节数组,它本质上是一个从数据库中检索到的编码.docx。我尝试将此byte[]转换为其原始文件,并将其作为邮件的附件,而不必先将其作为文件存储在磁盘上。解决此问题的最佳方法是什么?publicMailMessageComposeMail(stringmailFrom,stringmailTo,stringcopyTo,byte[]docFile){varmail=newMailMessage();mail.From=newMailAddress(mailFrom);mail.To.Add(newMailAddress(mailTo));mail.Body="mailwitha

c# - 数组从哪里继承(即 .int[] )

当创建一个数组时,比如int[],这是否继承自任何东西?我认为它可能继承自System.Array,但在查看编译的CIL后它似乎并非如此。考虑到您可以在数组上调用方法和访问属性,我认为它可能继承自System.Array或类似的东西。即int[]arr={1,2};arr.Initialize();arr.Length; 最佳答案 所有数组都派生自System.Array.来自(公认的古老)editionofMSDNmagazine:AllarraytypesareimplicitlyderivedfromSystem.Array,