草庐IT

out_param

全部标签

c# - 为什么 List<T> 出现 "Index was out of range"异常而不是数组?

当我初始化数组并使用索引器访问元素时,效果很好:object[]temp=newobject[5];temp[0]="bar";现在我希望同样适用于List,假设您可以通过将容量传递给构造函数来初始化它:Listtemp=newList(5);temp[0]="bar";然而,最后一行抛出以下异常:Indexwasoutofrange.Mustbenon-negativeandlessthanthesizeofthecollection为什么List会发生这种情况类型,但不是数组?由于数组只是CLR集合的较低级别抽象,那么为什么会出现此异常?原创question通过AwaisMahmo

c# - 使用 moq 验证对带有 param 参数的函数的调用

我有一个带有LogTrace(stringvalue,paramsobject[]parameters)的ILogger接口(interface)。现在我想验证是否调用了LogTrace并且要记录的字符串包含一些id。问题是它可以被不同地调用。例如。1)LogTrace("MyString"+id)2)LogTrace("MyString{0}",id)等等。Moq有没有好的方法来验证所有的场景?我只能考虑创建一个手工制作的模拟来格式化可用于验证的字符串。 最佳答案 mock.Verify(m=>m.LogTrace(It.IsAn

c# - C# 中的 `params` 是否总是会导致在每次调用时分配一个新数组?

C#/.NET通过按引用传递Array类型来实现可变函数参数(与C/C++不同,C/C++只是将所有值直接放在堆栈上,无论好坏).在C#世界中,这有一个很好的优势,即允许您使用“原始”参数或可重用数组实例调用相同的函数:CultureInfoc=CultureInfo.InvariantCulture;Stringformatted0=String.Format(c,"{0}{1}{2}",1,2,3);Int32third=3;Stringformatted0=String.Format(c,"{0}{1}{2}",1,2,third);Object[]values=newObjec

c# - C# 中的命名参数和 params 关键字

这个问题在这里已经有了答案:Howtosetnamedargumentforstring.Format?(2个答案)关闭9年前。我有一个C#方法,它带有使用params关键字声明的可变长度参数列表:publicvoidVariableLengthParameterFunction(objectfirstParam,paramsobject[]secondParam)调用方法时有没有使用命名参数的方法?

c# - 为什么 C# 不允许将 using 变量作为 ref 或 out 传递给函数

这个问题在这里已经有了答案:关闭11年前。PossibleDuplicate:PassinganIDisposableobjectbyreferencecausesanerror?为什么C#不允许将变量从usingblock作为ref或out传递给函数?这是我的代码:using(Forms=newForm()){doSomthing(refs);}函数在usingblock结束之前结束,为什么C#不让我将s作为ref或out参数传递?

c# - 在应用依赖注入(inject)时,Func<in T, out TResult> 是否适合用作 ctor arg?

例子:publicclassBusinessTransactionFactorywhereT:IBusinessTransaction{readonlyFunc_createTransaction;publicBusinessTransactionFactory(FunccreateTransaction){_createTransaction=createTransaction;}publicTCreate(){return(T)_createTransaction(typeof(T));}}使用相同的容器设置代码:publicclassDependencyRegistration:

c# - C# 中的 ref 和 out 参数不能被标记为变体

声明是什么意思?FromhererefandoutparametersinC#andcannotbemarkedasvariant.1)是否意味着以下不能做。publicclassSomeClass:IVariant{publicvirtualRDoSomething(refAargs){returnnull;}}2)或者这是否意味着我不能拥有以下内容。publicdelegateRReader(Aarg,strings);publicstaticvoidAssignReadFromPeonMethodToDelegate(refReaderpReader){pReader=ReadF

c# - 从浏览器安装后启动 Silverlight Out-of-Browser

我正在Silverlight4Beta中构建原型(prototype)应用程序,并且正在使用浏览器外(OOB)功能。我需要OOB功能才能访问本地文件系统,并且我想避免编写ActiveX组件或Java小程序。我需要在客户端计算机上安装浏览器后能够启动OOB体验。我似乎能做的就是从浏览器检测该应用程序是否已安装,然后要求用户从桌面或开始菜单(作为普通应用程序)启动它。然而,这“破坏”了客户所需的体验,而这本应由浏览器引导。有没有人能够直接从浏览器启动OOB应用程序?谢谢,马丁 最佳答案 这应该是不可能的。仅仅因为用户已同意将应用程序安装

c# - C#如何选择带歧义和params

假设我有以下方法:publicstaticvoidMyCoolMethod(paramsobject[]allObjects){}publicstaticvoidMyCoolMethod(objectoneAlone,paramsobject[]restOfTheObjects){}如果我这样做:MyCoolMethod("Hi","test");哪个被调用,为什么? 最佳答案 很容易测试-调用第二个方法。至于为什么-C#语言规范有一些关于如何解决不明确的函数声明的非常详细的规则。有很多关于SO周围接口(interface)、继承和

c# - 在 c# Parallel.ForEach 中的 List.Add() 上出现 "Index out of bounds"错误

这是代码Listsomething=newList();Parallel.ForEach(anotherList,r=>{..dosomeworksomething.Add(somedata);});Indexoutofbounds错误大约每百次运行1次。有没有办法防止由线程引起的冲突(我假设)? 最佳答案 为了防止出现此问题,您可以使用ConcurrentQueue而不是List或并行部分中的类似并发集合。并行任务完成后,您可以将其放入List中。.有关详细信息,请查看System.Collections.Concurrent命名