我正在尝试为我正在进行的项目在c#中正式使用“out”关键字,特别是关于任何公共(public)方法。我似乎找不到任何最佳实践,想知道什么是好是坏。有时我会看到一些像这样的方法签名:publicdecimalCalcSomething(Datestart,Dateend,outintsomeOtherNumber){}在这一点上,这只是一种感觉,这不太适合我。出于某种原因,我更愿意看到:publicResultCalcSomething(Datestart,Dateend){}其中结果是包含小数和someOtherNumber的类型。我认为这使它更容易阅读。它允许在不破坏代码的情况下扩
-结论先上结论,答案是yes,C#中数组确实具有out参数的特性。-疑问最近开发一个上位机的功能,有段代码看得我一直很迷糊,我的认识,函数的执行结果,要么在函数中通过return返回,要么通过out或ref参数返回。这段代码中明显没有通过return获取返回值,输入参数倒是看起来很像out返回值,但是我反复确认了N遍,定义就是没有out或ref类型。这就很是疑惑了,只好先放一边,先把它当做out参数取返回值理解去完成开发,今天有空终于把这个疑问摸清楚了。-验证各种百度,网上并没有答案。于是参照原来的代码写了一段Console程序,发现输入参数(字节数组)还真是在函数中更改后返回最新值了。此时原
已解决TypeError:Descriptorscannotnotbecreateddirectly.Ifthiscallcamefroma_pb2.pyfile,yourgeneratedcodeisoutofdateandmustberegeneratedwithprotoc>=3.1.0Ifyoucannotimmediatelyregenerateyourprotos,someotherpossibleworkaroundsare:1.Downgradetheprotobufpackageto3.20.xorlower.2.SetPROTOCOL_BUPFERS_PYTHON_iMPL
已解决TypeError:Descriptorscannotnotbecreateddirectly.Ifthiscallcamefroma_pb2.pyfile,yourgeneratedcodeisoutofdateandmustberegeneratedwithprotoc>=3.1.0Ifyoucannotimmediatelyregenerateyourprotos,someotherpossibleworkaroundsare:1.Downgradetheprotobufpackageto3.20.xorlower.2.SetPROTOCOL_BUPFERS_PYTHON_iMPL
据我所知,out参数的唯一用途是调用者可以从单个方法调用中获取多个返回值。但是我们也可以使用ref参数来获取多个结果值!那么在其他情况下,out参数是否有用,而我们不能使用ref参数呢?谢谢。 最佳答案 是的-ref和out之间的区别在于明确赋值:out参数不必必须在方法调用之前由调用者明确分配。它确实必须在它正常返回(即没有异常)之前在方法中明确分配。然后在调用之后明确地在调用者中分配变量。ref参数确实必须在方法调用之前由调用者明确分配。不必在方法中为其分配不同的值。假设我们想更改int.TryParse(string,outi
据我所知,out参数的唯一用途是调用者可以从单个方法调用中获取多个返回值。但是我们也可以使用ref参数来获取多个结果值!那么在其他情况下,out参数是否有用,而我们不能使用ref参数呢?谢谢。 最佳答案 是的-ref和out之间的区别在于明确赋值:out参数不必必须在方法调用之前由调用者明确分配。它确实必须在它正常返回(即没有异常)之前在方法中明确分配。然后在调用之后明确地在调用者中分配变量。ref参数确实必须在方法调用之前由调用者明确分配。不必在方法中为其分配不同的值。假设我们想更改int.TryParse(string,outi
在将参数从C#传递到C++时,使用[In,Out]和仅使用ref之间有区别吗?我发现了几个不同的SO帖子,以及来自MSDN的一些内容,这些内容与我的问题很接近,但没有完全回答。我的猜测是我可以像使用[In,Out]一样安全地使用ref,并且编码器的行为不会有任何不同。我担心的是它的行为会有所不同,并且C++不会对传递我的C#结构感到满意。我已经在我正在使用的代码库中看到了这两件事...以下是我找到并一直在阅读的帖子:AreP/Invoke[In,Out]attributesoptionalformarshalingarrays?让我觉得我应该使用[In,Out]。MSDN:InAttr
在将参数从C#传递到C++时,使用[In,Out]和仅使用ref之间有区别吗?我发现了几个不同的SO帖子,以及来自MSDN的一些内容,这些内容与我的问题很接近,但没有完全回答。我的猜测是我可以像使用[In,Out]一样安全地使用ref,并且编码器的行为不会有任何不同。我担心的是它的行为会有所不同,并且C++不会对传递我的C#结构感到满意。我已经在我正在使用的代码库中看到了这两件事...以下是我找到并一直在阅读的帖子:AreP/Invoke[In,Out]attributesoptionalformarshalingarrays?让我觉得我应该使用[In,Out]。MSDN:InAttr
我有一个方法有多个覆盖。在一个更扩展的覆盖中,我想返回一个OUT参数,但不是在我的更简单的覆盖中。例如:publicboolIsPossible(stringparam1,intparam2)publicboolIsPossible(stringparam1,intparam2,outboolparam3)我目前实现这一目标的方式是这样的:publicboolIsPossible(stringparam1,intparam2){booltemp;returnIsPossible(param1,param2,outtemp);}有没有更好的方法来实现这一点?我可以(或者我应该)使用可为n
我有一个方法有多个覆盖。在一个更扩展的覆盖中,我想返回一个OUT参数,但不是在我的更简单的覆盖中。例如:publicboolIsPossible(stringparam1,intparam2)publicboolIsPossible(stringparam1,intparam2,outboolparam3)我目前实现这一目标的方式是这样的:publicboolIsPossible(stringparam1,intparam2){booltemp;returnIsPossible(param1,param2,outtemp);}有没有更好的方法来实现这一点?我可以(或者我应该)使用可为n