在perl中,splice函数从现有数组返回一个新的项目数组,同时从现有数组中删除这些项目.
my @newarry = splice @oldarray, 0, 250;
Run Code Online (Sandbox Code Playgroud)
@newarray现在将包含250条记录,@oldarray并且@oldarray减少250条记录.
是否存在C#集合类的等价物,即具有类似功能的Array,List,Queue,Stack?到目前为止,我只看到了需要两个步骤的解决方案(返回+删除).
更新 - 没有功能存在,所以我实现了一个extensio方法来支持Splice功能:
public static List<T>Splice<T>(this List<T> Source, int Start, int Size)
{
List<T> retVal = Source.Skip(Start).Take(Size).ToList<T>();
Source.RemoveRange(Start, Size);
return retVal;
}
Run Code Online (Sandbox Code Playgroud)
通过以下单元测试 - 成功:
[TestClass]
public class ListTest
{
[TestMethod]
public void ListsSplice()
{
var lst = new List<string>() {
"one",
"two",
"three",
"four",
"five"
};
var newList = lst.Splice(0, 2);
Assert.AreEqual(newList.Count, 2);
Assert.AreEqual(lst.Count, 3);
Assert.AreEqual(newList[0], "one");
Assert.AreEqual(newList[1], "two");
Assert.AreEqual(lst[0], "three");
Assert.AreEqual(lst[1], "four");
Assert.AreEqual(lst[2], …Run Code Online (Sandbox Code Playgroud) 我在流程开始时按如下方式创建处理对象:
using (var lifetime = EngineContext.Current.BeginLifetimeScope())
{
var sourceService = lifetime.Resolve<SourceService>();
// do things...
}
Run Code Online (Sandbox Code Playgroud)
SourceService类依赖于也通过构造函数注入在AutoFac中注册的其他对象。
这些对象是否自动继承与其“父对象”(即sourceService)相同的生命周期范围?