用C#列出切片

gre*_*Bow 2 c# python arrays slice

我在python脚本中遇到了这种语法,并看到它被称为切片赋值.你如何在C#中编写这种语法?

self.nav[:] = []
Run Code Online (Sandbox Code Playgroud)

Adr*_*ian 6

C#没有切片赋值运算符,但您可以使用提供的方法List<T>:

list[a:b] = otherList 
Run Code Online (Sandbox Code Playgroud)

相当于

list.RemoveRange(a,b-a);
list.InsertRange(a, otherList);
Run Code Online (Sandbox Code Playgroud)

或者,在空间的情况下

list[:] = [] 
Run Code Online (Sandbox Code Playgroud)

你可以写

list.Clear();
Run Code Online (Sandbox Code Playgroud)

从技术上讲,您可以编写自己的列表类,该类继承List<T>并模拟pythons行为(至少部分):

public class ExtendedList<T> : List<T> 
{
    public IEnumerable<T> this[int start, int end] 
    {
        get 
        { 
            return this.Skip(start).Take(end - start); 
        }
        set 
        {
            int num = end - start;
            RemoveRange(start, Count - num > 0 ? num : 0);
            InsertRange(start, value);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)