Tag: 数组

Array.Copy vs Skip and take in c#

我正在浏览这个问题和一些类似的问题: 从现有arrays获取子arrays 很多地方我都读到这样的答案: 从现有arrays获取子arrays 我想知道为什么Skip和Take不是数组的恒定时间操作? 反过来,如果它们是常量时间操作,那么Skip和Take方法(最后没有调用ToArray())是否具有相同的运行时间而没有执行Array.Copy的开销,而且空间效率更高?

从字符串数组的列表转换为对象列表

如果我有一个看起来像这样的简单类: public string Param1 { get; set; } public string Param2 { get; set; } public SimpleClass (string a, string b) { Param1 = a; Param2 = b; } 从另一个类返回的字符串数组列表: var list = new List {new[] {“first”, “second”}, new[] {“third”, “fourth”}}; 有没有更有效的方法使用C#最终得到List而不执行以下操作: var list1 = new List(); foreach (var i in list) { var data […]

在c#中查找和删除数组中的项

我有一个字符串数组。 我需要从该数组中删除一些项目。 但我不知道需要删除的项目的索引。 我的数组是:string [] arr = {“”,“a”,“b”,“”,“c”,“”,“d”,“”,“e”,“f”,“”,“ “}。 我需要删除“”项目。 即删除“”后我的结果应该是arr = {“a”,“b”,“c”,“d”,“e”,“f”} 我怎样才能做到这一点?

将C#datagridview列转换为数组

我正在用c#构建一个程序,并在其中包含了一个datagridview组件。 datagridview具有固定数量的列(2),我想将其保存到两个单独的数组中。 但行数确实发生了变化。 我怎么能这样做?

如何检查int 是否只包含某些数字?

我需要检查int []是否只包含某些值(在本例中为0s和1s),如果不包含则抛出exception。 有没有比以下任何一种解决方案更有效的方法? 简单(但O(n)): for(int n = 0; n < myArray.Length; n++) if(!(myArray[n] == 0 || myArray[n] == 1)) throw new Exception("Array contains invalid values"); 使用Where(): if(myArray.Where(n => !(n==1 || n==0)).ToArray().Length > 0) throw new Exception(“Array contains invalid values”);

LINQ搜索特定字符串的字符串数组列表

我有一个字符串数组列表: List listOfStringArrays = something; 我需要从集合中选择所有对象,其值等于列表中任何字符串数组的第0个索引处的字符串。 例如,如果我只有一个简单的字符串列表,声明为: List listOfStrings = something; 我会这样做: var query = someCollection.Where(x => listOfStrings.Contains(x.id_num)) 但显然,对于字符串数组列表来说并不是那么简单。 我知道我可以轻松地遍历字符串数组列表并创建一个带有第0个值的简单字符串列表,如下所示: List listOfStringArrays = something; List listOfValues = new List(); foreach (string[] s in listOfStringArrays) listOfValues.Add(s[0]); var query = someCollection.Where(x => listOfValues.Contains(x => x.id_num); 但是我真的想避免这种情况,并试图将其写成一个内衬而不引入额外的列表和循环。

创建未知类型的数组。 C#

在C#中使用reflection时,你应该传递一个稍后投射的参数的对象[],我有一个gui,让用户输入参数值。我知道他们希望输入什么类型的输入,int,string,float,自定义对象的实例等…如果参数是某种类型的数组int [] foo [],它允许用户构造该类型的数组,并添加/删除元素。 我不知道的是我如何使用这些信息(我知道数据的类型是类型t。)我如何构造一个数组t [],这样当它被赋予调用时,它可以转换为该数组类型。 例如,现在如果我有一个需要一个整数数组作为参数的函数,我当前正在传递一个对象[],其中有一个用整数填充的另一个对象[],但你不能只是转换对象[]到int []所以调用失败。 我不能写一个switch case,因为它不可能预测它可能是所有可能的类型(例如,在加载的dll中定义的其他类的实例)

List 中使用哪种算法来动态分配内存?

现在我有一个动态分配数组内存的算法: 如果数组已满,我创建一个两倍大小的新数组,并复制项目。 如果数组是四分之一满,我创建一个大小一半的新数组,并复制项目。 这是用于动态内存分配的相当快的算法,尽管将元素复制到新分配的数组的额外开销。 什么是更快, List或基于数组的这种算法? 你会建议使用什么? List使用简单数组作为内部数据结构吗?

C#引用数组

我怎么能这样做? int v1 = 4; int v2 = 3; int v3 = 2; int v4 = 1; int [] vars = new int [] {ref v1, ref v2, ref v3, ref v4}; for (var i = 0; i < 4; i++) { ChangeVar (vars [i], i); } void ChangeVar (ref int thatVar, int newValue) { […]

动态创建锯齿状矩形arrays

在我的项目中,我有很多这样的代码: int[][] a = new int[firstDimension][]; for (int i=0; i<firstDimension; i++) { a[i] = new int[secondDimension]; } 元素的类型是不同的。 有没有办法写一个像这样的方法 createArray(typeof(int), firstDimension, secondDimension); 并获得new int[firstDimension][secondDimension] ? 同样,元素类型仅在运行时才知道。