草庐IT

out_param

全部标签

c# - Generic 类型参数前的 "out"是什么意思?

我刚刚在寻找GroupBy返回类型时看到了一个不熟悉的语法:publicinterfaceIGrouping:IEnumerableMSDNSource我知道out在方法中是什么意思,但在泛型接口(interface)中不知道。out在泛型中是什么意思? 最佳答案 它表示一个covariant范围。另见关于MSDN的描述.本质上它说,IGrouping可以看作是IGrouping,因此你可以IGroupinggr=MakeGrouping(...);IGroupinggrBase=gr;如果Aderived是从Abase派生的接口(

c# - 如何使 Moq 忽略 ref 或 out 的参数

在RhinoMocks中,您可以将模拟作为一揽子声明告知IgnoreArguments。在Moq中,您似乎必须为每个参数指定It.IsAny()。但是,这不适用于ref和out参数。如何在需要最小化内部服务调用以返回特定结果的地方测试以下方法:publicvoidMyMethod(){//DoStuffIListerrors=newList();varresult=_service.DoSomething(referrors,refparam1,param2);//Domorestuff}测试方法:publicvoidTestOfMyMethod(){//SetupvarmoqServ

c# - 带params的命名参数

我有一个从数据库中获取值的方法。publicvirtualListGetValues(int?parameter1=null,int?parameter2=null,int?parameter3=null,paramsExpression>[]include){//...}如何使用命名参数调用此函数而不在include之前写入所有参数?我想做这样的事情varuserInfo1=Unit.UserSrvc.GetValues(include:p=>p.Membership,p=>p.User);但这似乎不起作用?如何将命名参数与params一起使用? 最佳答案

c# - params 过载明显的歧义 - 仍然可以编译和工作吗?

我们刚刚在我们的代码中发现了这些:publicstaticclassObjectContextExtensions{publicstaticTFind(thisObjectSetset,intid,paramsExpression>[]includes)whereT:class{...}publicstaticTFind(thisObjectSetset,intid,paramsstring[]includes)whereT:class{...}}如您所见,除了params之外,它们具有相同的签名。它们以多种方式使用,其中之一:DBContext.Users.Find(userid.V

c# - 如何声明带有 out 参数的通用委托(delegate)

这个问题在这里已经有了答案:Funcwithoutparameter(4个答案)关闭8年前。Func,只是不编译,如何声明我希望第二个参数是out一个?我想这样使用它:publicclassFoo(){publicFuncDetectMethod;}

c# - FakeItEasy 的 Out 和 Ref 参数

我有一个方法,它有一个返回多个记录的out参数。我想知道如何使用FakeItEasy模拟它。 最佳答案 您应该使用.AssignsOutAndRefParameters配置方法:[Test]publicvoidOutput_and_reference_parameters_can_be_configured(){varfake=A.Fake>();stringignored=null;A.CallTo(()=>fake.TryGetValue("test",outignored)).Returns(true).AssignsOutA

c# - <in From, out To> 是什么意思?

Resharper建议从interfaceIModelMapper{TToMap(TFrominput);}进入interfaceIModelMapper所以我调查了一下并结束阅读thisarticle(通过Wikipedia文章找到)和更多Google。我仍然不确定这对我的申请意味着什么,所以我很想不接受这个建议。此更改会带来哪些好处,我不会通过忽略该建议来考虑?更明确地说,我为什么要接受它? 最佳答案 底线:Resharper已调查您的类型,并发现TFrom可以逆变地使用,并且TTo协变地。接受重构将使您能够更灵活地使用这些类型

c# - 是否可以有多个 "params"参数?

在C#中是否可以有多个params参数?像这样:voidfoobar(paramsint[]foo,paramsstring[]bar)但我不确定这是否可行。如果是,编译器将如何决定在何处拆分参数? 最佳答案 您只能有一个参数参数。您可以有两个数组参数,调用者可以使用数组初始值设定项来调用您的方法,但只能有一个params参数。voidfoobar(int[]foo,string[]bar)...foobar(new[]{1,2,3},new[]{"a","b","c"}); 关于c#-

c# - 无法将值类型数组转换为 params 对象 []

如果C#可以将int转换为对象,为什么不能将int[]转换为object[]?简单程序示例:voidMain(){vara=newString[]{"0","1"};varb=newint[]{0,1};AssertMoreThan1(a);//NoExceptionAssertMoreThan1(b);//Exception}staticvoidAssertMoreThan1(paramsobject[]v){if(v.Length==1){thrownewException("TooFewParameters");}} 最佳答案

c# - 为什么 Console.Out.WriteLine 存在?

实际上问题应该是为什么Console.WriteLine的存在只是为了作为Console.Out.WriteLine的包装器我使用智能感知发现了这个小方法,然后打开了.NETreflector并“反编译”Console.WriteLine方法的代码,发现:publicstaticvoidWriteLine(stringvalue){Out.WriteLine(value);}那么为什么WriteLine是这样实现的呢?这完全只是捷径还是另有原因? 最佳答案 Console.WriteLine是一个静态方法。Console.Out是一