使用“out”有什么技巧吗? lambda 函数内的参数?
if ( (new Func</*out*/ string, bool>( (/*out*/ string uname) => ....
更多细节:这是登录函数的一部分,我只想让我的 lambda 函数使用 out 参数更改登录名用户,并告诉我用户使用 bool 返回值登录。
我真的明白我可以返回元组,然后获取我的字符串值,但为了个人清楚起见,我想要精确的输出参数。如果用户未登录,我最好只返回带有 null 的字符串,只是想知道是否可以在 lambda 函数内使用 out 参数。
我确实知道语句位置上带有表达式的代码不是那么干净,但没有人告诉我这是否对编译器来说真的很糟糕。
if ( (new Func</*out*/ string, bool>( (/*out*/ string uname) => ....
more details : that is a part of login function and I just want that my lambda function to changes login-name user with a out parameter and said me that user logined with it's bool return.
I really understand that I can return the Tuple and then get my string value but I want exactly out parameter for some personal clarity. I better return only string with null if user is not login, just want to know if I can use out parameters inside lambda functions.
And I really get that the code with expressions on the statement places is not so clean But none said me if that is really bad for compiler.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
Lambda表达式不起作用,但对于委托,您应该可以使用语句主体:
对于委托...您需要定义自己的:
Lambda expressions won't work, but for delegates you should be fine using a statement body:
For delegates... You will need to define your own:
虽然您不能使用 out 关键字,但我确实找到了一个解决方案,可以让您基本上在 .NET 中实现 C++ 风格的内存指针。 我发现了这个类,因为您打开这个问题的原因就是无法在我想要的地方使用输出参数。
用法示例
我在批处理程序中使用它,当我需要细粒度会话控制时,允许批处理操作使用 RavenDB 控制会话刷新,同时还保留环境会话上下文。警告我不知道这种类型的代码在长时间运行的生产应用程序中会产生什么影响,因为我不确定这是否会混淆 GC 并导致内存永远不会被回收。
While you can't use the out keyword I did find a solution that lets you basically achieve C++ style memory pointers in .NET. I found this class due to the very reason you opened this SO question not being able to use an out parameter where I wanted it.
Usage example
I use this in a batch program that allows batch operations to control session flushing with RavenDB when I need fine grained session control while also leaving an ambient session context. Word of warning I have no idea what implications this type of code would have in a long running production app since I'm not sure if this would confuse the
GC
and cause memory to never be reclaimed.不能将 out 参数与 lambda 表达式一起使用。请参阅此 Stack Overflow 问题。
You cannot use out parameters with a lambda expression. See this Stack Overflow question.