Tag: 数组

IndexOutofRangeException是什么意思?

它说在我的数组中我已经超越了索引。 我的节目是5个玩家(5个索引)玩的数字猜测游戏。 我使用数组来创建对象和播放器类。 我已经到了一个残端,我的程序在第二轮或第三轮比赛中崩溃。 我注意到在第二轮中,索引没有循环属性:循环在第一个循环中计算索引1到5,然后在第二个循环中计数2到5,然后如果我甚至到达循环的第3轮,所有的索引都被洗牌,意思是我不能从1到5。 当每个玩家得到3个猜测时,使用这3个猜测和你的游戏。 我已经为播放器创建了一个对象数组,创建了一个比前一个更小的临时数组并引用它来实现当前数组。 我在代码中查看了我的引用,发现尽可能多的代码,我找不到导致我的System.IndexOutOfRangeException的错误。 这是由我的猜谜游戏课引起的。 这是我的GuessingGame课程: using System; // only this using statement is needed here. namespace GuessingGame { class GuessingGame { #region instance attributes private const int GUESSES_ALLOWED = 3; private const int NUMBER_OF_PLAYERS_TO_START = 5; private const int MIN_VALUE = 1; private const int MAX_VALUE = 15; private Player[] […]

将不同值类型的数组转换为字节数组

这是我到目前为止所提出的,但它似乎不是最优的,任何关于更好方法的想法? public void ToBytes(object[] data, byte[] buffer) { byte[] obytes; int offset = 0; foreach (object obj in data) { if (obj is string) obytes = System.Text.Encoding.UTF8.GetBytes(((string)obj)); else if (obj is bool) obytes = BitConverter.GetBytes((bool)obj); else if (obj is char) obytes = BitConverter.GetBytes((char)obj); // And so on for each valuetype Buffer.BlockCopy(obytes, 0, buffer, offset, obytes.Length); […]

Array.Length与Array.Count

可能重复: 计数与集合中的长度与大小 在.NET中,几乎所有集合都具有.Count属性。 有时我想知道是否最好将它同时放在Array ,但不是直接通过ICollection 。 这只是你在脑海中为数组做出exception的事情。 那么在这种情况下,“更正确”还是“更统一”更好?

如何使用具有二维数组的LINQ

我有一个二维字节数组,看起来像这样: 0 0 0 0 1 1 1 1 1 0 0 0 1 1 1 1 0 1 0 1 数组中的每个值只能是0或1.上面的简化示例显示了4行,每行有5列。 我试图找出如何使用LINQ将索引返回到具有最大数量的1s的行,在上面的示例中应该返回1。 以下非LINQ C#代码解决了这个问题: static int GetMaxIndex(byte[,] TwoDArray) { // This method finds the row with the greatest number of 1s set. // int NumRows = TwoDArray.GetLength(0); int NumCols = TwoDArray.GetLength(1); int RowCount, MaxRowCount […]

在C#中比较2个整数列表/数组的最佳方法是什么?

我想比较2个整数列表是否相等。 如果能让它变得更容易,我很乐意提前对它们进行排序。 这是我要比较的两件事的例子。 对于下面,我希望结果是真的。 注意:列表中永远不会有任何重复项(没有重复值) List list = new List(){1, 4,6,7}; int[] myArray = new int[]{1, 6,7 ,4};

.NET中是否可以使用不可变数组?

是否有可能以某种方式将System.Array标记为不可变。 当置于public-get / private-set之后,它们无法添加,因为它需要重新分配和重新分配,但消费者仍然可以设置他们希望的任何下标: public class Immy { public string[] { get; private set; } } 我认为readonly关键字可能会起作用,但没有这样的运气。

我如何对一系列结构进行排序?

我有一个包含歌曲数据的结构: public struct uLib { public string Path; public string Artist; public string Title; public string Album; public string Length; } 我的库包含一个这个uLib的数组。 我怎么用艺术家对这个数组进行排序? 有没有我可以在这种类型的数组上调用的本机排序函数,还是我必须“自己滚动”?

拆分CSV并在元素中排除逗号

我有一个CSV字符串,我想把它分成一个数组。 但是,CSV是字符串和数字的混合,其中字符串用引号括起来,可能包含逗号。 例如,我可能有如下CSV: 1,”Hello”,2,”World”,3,”Hello, World” 我希望它能将字符串拆分为: 1 “Hello” 2 “World” 3 “Hello, World” 如果我使用String.Split(‘,’); 我明白了: 1 “Hello” 2 “World” 3 “Hello World” 有这么简单的方法吗? 已经编写的库或者我必须按字符解析字符串吗?

Linq中的SelectMany和维数组?

为什么这段代码编译: byte[][] my2DArray =new byte [][]{ new byte[] {1, 2}, new byte[] {3, 4}, }; var r = my2DArray.SelectMany(f=> f); 而这个不是: byte[,] my2DArray =new byte [2,2]{ {1, 2}, {3, 4}, }; var r = my2DArray.SelectMany(f=> f); 不是[][]是[,] ? 编辑 为什么我需要那个? 我需要创建一个单维数组,以便将其发送到GetArraySum 当然我可以创建重载,但我想将mutli dim转换成一个暗淡的。 ( GetArraySum也提供纯维数组)。 void Main() { byte[][] my2DArray =new byte [][]{ new byte[] […]

从c#传递数组到Oracle过程

我正在尝试将数组传递给oracle过程。 我搜索了它,首先我创建了一个名为’dizi’的类型(在这里输入链接描述 )。 所以它适用于oracle开发人员。 问题是; 我不能将我的c#数组作为参数传递给procedure。 那么如何将我的数组传递给我的程序呢? 这是我的代码(当我执行时,oracle错误说:并非所有变量都绑定) public void InsertQuestion(List area_list) { quest_areas = area_list.ToArray(); command.Connection = connect; connect.Open(); var arry = command.Parameters.Add(“Areas”, OracleDbType.Varchar2); arry.Direction = ParameterDirection.Input; arry.CollectionType = OracleCollectionType.PLSQLAssociativeArray; arry.Value = quest_areas; command.CommandText =”TESTPROCEDURE(:Areas)”; command.CommandType = CommandType.StoredProcedure; command.ExecuteNonQuery(); connect.Close(); }