Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby到C#的转换,分配给按范围索引的数组_C#_Ruby_Arrays - Fatal编程技术网

Ruby到C#的转换,分配给按范围索引的数组

Ruby到C#的转换,分配给按范围索引的数组,c#,ruby,arrays,C#,Ruby,Arrays,我很难理解这一点,因为我对Ruby不是很熟悉,我需要将这段代码转换为C: 礼品是一个数组,但这一行做什么?它是将元素从(位置+1)移到-1,还是将它们标记为空元素 我使用的是: gifts.RemoveRange(0, position + 1); ruby代码段将删除位置后的所有内容: gifts = [1,2,3,4,5]; gifts[2..-1] = []; gifts; // [1, 2] 一个等价的C#代码段(使用LINQ)是: gifts = gifts.Take(positi

我很难理解这一点,因为我对Ruby不是很熟悉,我需要将这段代码转换为C:

礼品是一个数组,但这一行做什么?它是将元素从(位置+1)移到-1,还是将它们标记为空元素

我使用的是:

gifts.RemoveRange(0, position + 1);

ruby代码段将删除位置后的所有内容:

gifts = [1,2,3,4,5];
gifts[2..-1] = [];
gifts; // [1, 2]
一个等价的C#代码段(使用LINQ)是:

gifts = gifts.Take(position+1).ToList();
或者,如果您想就地修改列表(不需要LINQ):


这个Ruby代码
将[(位置+1)…-1]=[]
位置+1
删除到
-1
,这是Ruby中的“数组的最后一个元素”

因此,C#中的等效代码将是


如果对的文档有什么特别不清楚的地方,我相信Ruby团队会的@JörgWMittag:我认为这里是解析
范围
端点的奇怪特殊情况。因为例如
5..-1
将在
[]
内部和外部执行不同的操作是的,数组切片不关心范围的内容(在这种特殊情况下,范围是空的),只关心开始和结束点。有道理,但不明显。
gifts = gifts.Take(position+1).ToList();
gifts.RemoveRange(position + 1, list.Count - position - 1);
gifts.RemoveRange(position + 1, gifts.Count- position - 1);