草庐IT

out-parameters

全部标签

c# - 为什么在匿名方法中不允许使用 out 参数?

这不是Callingamethodwithreforoutparametersfromananonymousmethod的骗局我想知道为什么out参数在匿名方法中是不允许的。不允许ref参数对我来说更有意义,但是out参数,就没那么多了。你对此有何看法 最佳答案 在某些方面,这是一个骗局。Out参数是ref参数。C#语言使用的值只是一个额外的属性。不允许它们的原因与ref参数完全相同。这里的问题源于在匿名方法中使用在匿名方法之外声明的值的效果。这样做会捕获lambda中的值,并且出于必要而任意延长其生命周期,使其超出当前函数的生命周

c# - 在 C# 中取消参数?

在阅读stackoverflow后,在检查DateTime格式的情况下,您应该使用DateTime.TryParse。在尝试了一些正则表达式之后,它们似乎变得又长又难看,无法覆盖大量格式。但TryParse需要一个“out”参数,因为我只想进行验证格式检查,所以我不需要实际结果。所以我只剩下一个保存“out”结果的变量,我什么都不做。有没有办法让我不必执行输出参数?所以我摆脱了这个警告,不再让变量四处乱飞。 最佳答案 对于C#7.0(自2016年8月起),您可以使用outvar构造,然后在后续代码中忽略新的var。boolsucce

c# - out 用于多个输出值或返回组合值类型更好吗?

例如,按照以下行:publicboolIntersect(Rayray,outfloatdistance,outVector3normal){}对比publicIntersectResultIntersect(Rayray){}publicclassIntersectResult{publicboolIntersects{get;set;}publicfloatDistance{get;set;}publicVector3Normal{get;set;}}哪个在清晰度、易用性和最重要的性能方面更好。 最佳答案 我会使用组合类型,我会

c# - 如何修复 'T' 是 'type parameter' 但被用作 'variable' 编译错误

我需要检查泛型类型参数T是MyEntity还是它的子类。下面的代码会导致这个编译器错误:'T'isa'typeparameter'butisusedlikea'variable'如何修复?publicclassMyEntity{}staticvoidTest(){//Error34'T'isa'typeparameter'butisusedlikea'variable'if(TisMyEntity){}} 最佳答案 您可以使用IsAssignableFromType上的方法检查是否有一个Type可以分配给另一个。if(typeof(

c# - "Possible multiple enumeration of IEnumerable"与 "Parameter can be declared with base type"

在Resharper5中,以下代码导致list出现警告“Parametercanbedeclaredwithbasetype”:publicvoidDoSomething(Listlist){if(list.Any()){//...}foreach(variteminlist){//...}}在Resharper6中,情况并非如此。但是,如果我将方法更改为以下内容,我仍然会收到该警告:publicvoidDoSomething(Listlist){foreach(variteminlist){//...}}原因是,在这个版本中,list只枚举一次,所以改成IEnumerable不会自动

c# - 如何确定 Console.Out 是否已重定向到文件?

如果我的程序正在打印到控制台,我会根据Console.WindowWidth通过插入换行符以某种方式执行自动换行-这非常有效。但是,如果程序的输出被重定向到一个文件或另一个程序,我希望它跳过自动换行。我如何才能检测到这种情况?Console.WindowWidth在两种情况下返回相同的数字。奖励如果解决方案可以区分重定向的Console.Out和重定向的Console.Error。 最佳答案 .NET4.5添加了Console.IsOutputRedirected和Console.IsErrorRedirected。

c# - 属性、索引器或动态成员访问不能作为 out 或 ref 参数传递

这个问题在这里已经有了答案:C#propertyandrefparameter,whynosugar?(9个回答)Apropertyorindexermaynotbepassedasanoutorrefparameter(9个回答)关闭9年前。您好,我无法弄清楚这一点。我有这些结构和类。structCircle{...}classPainting{Listcircles;publicListcircles{get{returncircles;}}}我正在尝试使用以下代码从绘画类外部修改其中一个圆圈:MutatePosition(refpainting.Circles[mutationI

c# - MSDeploy - 允许参数在 parameters.xml 中是可选的/为空的

我正在使用msdeploy部署asp.net-mvcWeb应用程序通过teamcity.我正在使用paramaters.xml文件来操纵我的应用程序的web.config,具体应用settings部分。我有一些设置,其中只有对特定环境具有值才有效,其余时间该值应为空白(即,Property应仅在Production上具有值)。但是,当我不指定一个值时,MSDeploy给了我这个异常:Microsoft.Web.Deployment.DeploymentException:The'facebookUserToken'argumentcannotbenullorempty.atMicros

c# - 为什么匿名委托(delegate)/lambda 不推断 out/ref 参数的类型?

StackOverflow上的几个C#问题询问如何使用out或ref参数制作匿名委托(delegate)/lambda。参见,例如:CallingamethodwithreforoutparametersfromananonymousmethodWritealambdaoranonymousfunctionthatacceptsanoutparameter为此,您只需指定参数的类型,如:publicvoiddelegateD(outTp);//...Da=(outTt)=>{...};//Lambdasyntax.Db=delegate(outTt){...};//Anonymousd

c# - SQLCommand.Parameters.Add - 如何给出十进制值大小?

您将如何指定:Decimal(18,2)在此:SqlComm.Parameters.Add("@myValue",SqlDbType.Decimal,0,"myValue");目前我已经从设计端属性定义了precision=2。我只是好奇如何从代码中实现这一点。谢谢 最佳答案 没有Add的重载可让您直接设置小数精度,因此您需要创建一个SQlParameter对象并将其添加到集合中:SqlParameterparam=newSqlParameter("@myValue",SqlDbType.Decimal);param.SourceC