草庐IT

可变数组

全部标签

c# - 如何初始化二维数组?

我有一个二维数组数组。例如,它是这样的:{{{0,0,1},{1,0,0}}{{0,0,3},{2,1,2},{2,2,1},{3,0,0}}{{0,0,7},{3,2,6},{6,2,3},{6,3,2},{7,0,0}}}但是如果我写int[,][]arrays={{{0,0,1},{1,0,0}}{{0,0,3},{2,1,2},{2,2,1},{3,0,0}}{{0,0,7},{3,2,6},{6,2,3},{6,3,2},{7,0,0}}};编译器会提示“;expected”。如果我写int[,][]arrays={newint[,]{{0,0,1},{1,0,0}}newi

c# - 将 BYTE 数组转换为 INT

我有这种代码staticvoidMain(string[]args){byte[]array=newbyte[2]{0x00,0x1f};Console.WriteLine(BitConverter.ToInt32(array,0));}但是它不起作用。它抛出异常:Destinationarrayisnotlongenoughtocopyalltheitemsinthecollection.Checkarrayindexandlength.怎么了? 最佳答案 顾名思义,一个Int32是32位,即4个字节,所以如果要将字节数组转换为I

c# - 为什么 Guid.ToString ("n") 与从同一 guid 的字节数组生成的十六进制字符串不同?

考虑以下单元测试:[TestMethod]publicvoidTestByteToString(){varguid=newGuid("61772f3ae5de5f4a8577eb1003c5c054");varguidString=guid.ToString("n");varbyteString=ToHexString(guid.ToByteArray());Assert.AreEqual(guidString,byteString);}privateStringToHexString(Byte[]bytes){varhex=newStringBuilder(bytes.Length*

c# - 作为字典键的整数数组

我希望有一个使用整数数组作为键的字典,如果整数数组具有相同的值(甚至不同的对象实例),它们将被视为相同的键。我应该怎么做?以下代码不起作用,因为b是不同的对象实例。int[]a=newint[]{1,2,3};int[]b=newint[]{1,2,3};Dictionarydic=newDictionary();dic.Add(a,"haha");stringoutput=dic[b]; 最佳答案 您可以创建一个IEqualityComparer来定义字典应该如何比较项目。如果项目的顺序是相关的,那么这样的事情应该有效:publi

c# - LINQ 列表属性到数组?

在PROPNAME可以是T类型的任何属性的情况下,执行此操作的最佳方法是什么?通过反射构建它,或者是否有一个很好的LINQ方法来做到这一点?T[]vals=people.Select(x=>x.PROPNAME).ToArray();这是迄今为止我得到的最好的:publicT[]ConvertListCol(IEnumerablelist,stringcol){vartyp=typeof(TFrom);varprops=typ.GetProperties();varprop=(frompinpropswherep.Name==colselectp).FirstOrDefault();v

c# - 在 C# 中公开数组元素的属性

我想在C#中创建一个属性,用于设置或返回数组的单个成员。目前,我有这个:privatestring[]myProperty;publicstringMyProperty[intidx]{get{if(myProperty==null)myProperty=newString[2];returnmyProperty[idx];}set{myProperty[idx]=value;}}但是,我得到以下编译错误:Badarraydeclarator:Todeclareamanagedarraytherankspecifierprecedesthevariable'sidentifier.To

c# - ASP .NET 中的数组键值与 C#

我是使用C#的asp.net新手。现在我需要一个问题的解决方案。在PHP中我可以这样创建一个数组:$arr[]=array('product_id'=>12,'process_id'=>23,'note'=>'ThisisNote');//ExampleArray([0]=>Array([product_id]=>12[process_id]=>23[note]=>ThisisNote)[1]=>Array([product_id]=>5[process_id]=>19[note]=>Hello)[2]=>Array([product_id]=>8[process_id]=>17[no

c# - 在抛出 AssertFailedException 的单元测试中比较两个数组

我正在为准备好的代码编写单元测试,但在尝试运行其中一个测试时收到意外的AssertFailedException。这是他:[TestMethod]publicvoidTestPositionGetter(){testPlayer.Position=newint[]{1,3};int[]expectedPosition=testPlayer.Position;Assert.AreEqual(expectedPosition,testPlayer.Position);}这是我要测试的Player类中的Position属性:publicint[]Position{get{returnnewi

c# - 在 C# 中返回数组是错误的形式吗?我应该返回 List<T> 吗?

我有一个返回可变数量元素的函数,我应该返回数组还是列表?“集合”的大小一旦返回就不会改变,即出于所有目的集合都是不可变的。我想只返回一个数组,但有些人说不要从函数返回可变大小的数组,因为它是“糟糕的形式”。不确定为什么?这需要与.NET2.0兼容有关系吗? 最佳答案 如果不需要返回数组是一种不好的形式,尤其是返回List.通常,您需要返回IEnumerable或IList.如果您的用户只需要遍历每个元素,IEnumerable将提供这种能力。它还允许您使用延迟执行潜在地(现在或以后)实现例程。如果你的用户需要通过索引访问元素,返回I

c# - 如何设计具有复杂初始化的不可变对象(immutable对象)

我正在学习DDD,并且遇到了“值对象”应该是不可变的声明。我知道这意味着对象状态在创建后不应更改。这对我来说是一种新的思维方式,但在很多情况下都是有道理的。好的,所以我开始创建不可变的值对象。我确保他们将整个状态作为构造函数的参数,我不添加属性setter,并确保不允许任何方法修改内容(仅返回新实例)。但现在我想创建这个包含8个不同数值的值对象。如果我创建一个具有8个数字参数的构造函数,我觉得它不会很容易使用,或者更确切地说-在传递数字时很容易出错。这不是好的设计。所以问题是:是否有任何其他方法可以使我的不可变对象(immutable对象)更好......,可以在C#中完成任何魔术来克