-
Notifications
You must be signed in to change notification settings - Fork 1k
This issue was moved to a discussion.
You can continue the conversation there. Go to discussion →
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Declaration of ref/out parameters in lambdas without typename #338
Comments
+1 Just ran into this issue myself! Like all type inference this would definitely make for some cleaner code! |
With the addition of |
@ThadHouse, what do you mean by in delegates? |
A delegate with some of the parameters being |
Really? I'd think that value copying would be peanuts compared to the allocation and delegate dispatch. |
Oh! Delegates with in parameters. |
@HaloFour from testing, the dispatch has gotten much better in recent .NET Core versions, and if static delegates ever get added they'll be even better. And the allocation can be made to only happen once at the beginning of a program, so that can be less of a concern done right. |
static delegates (#302) would help with that. |
This issue really takes long times |
Namedropping CS0748 here because otherwise this issue is too hard to find. |
Can I somehow help with moving this forward? |
I'll champion htis. @vilvanov I could see us doing this. that said, having an high quality implementation provided by a community member would certainly make this cost less nad improve the chances of this happening. |
Thank you for championing this. |
If you need any help, feel free to ask on the Roslyn gitter. You can also make a draft PR early, and ask for guidance. Feel free to tag me any time you like, as I've made a few contributions to Roslyn. @CyrusNajmabadi is always helpful and knows Roslyn inside out! Good luck! |
Showing another use case - A simplified version of restricted state access with side effects (locking):
|
@CyrusNajmabadi this one does not have a proposal spec yet, does the issue need the needs approved spec label first before moving onto the prototype implementation itself? |
Yes. |
This issue was moved to a discussion.
You can continue the conversation there. Go to discussion →
@ViIvanov commented on Sat Feb 07 2015
Hello!
I have a little suggestion for C# language.
Let us have delegate like this:
and we want to create an instance:
All is OK. What about ref/out parameters in a delegate?
when we want to create an instance…
…we shoud to specify types on parameters.
Why is this required? What about a syntax below:
?
@mikedn commented on Sat Feb 07 2015
In this particular case you don't need to write any of the parameter stuff, it's just:
@alanfo commented on Sun Feb 08 2015
This would be a worthwhile improvement to type inference, in my view.
As
ref
andout
are full keywords, they can't possibly be type names and so there appears no reason why the compiler won't be able to infer the type from the delegate signature.@paulomorgado commented on Sun Feb 08 2015
I'm not sure I understand what you are proposing.
Would you care to elaborate a bit more?
@ViIvanov commented on Mon Feb 09 2015
@paulomorgado Of course! Let us see a code below:
Why this is meaningful:
ref
orout
modifier user must explicitly specify types of all "delegate parameters".ref
orout
parameters.@omariom commented on Mon Feb 09 2015
👍
@paulomorgado commented on Mon Feb 09 2015
I ink you are missing the fact that, although you can't declare by reference type parameters in C#, when a parameter is expressed as of being of type ref T (or out T, which is the same for the CLR - just extra validation from the compiler), the type is, actually, &T, which is not the same as T.
@ViIvanov commented on Mon Feb 09 2015
@paulomorgado Excuse me, can you explain what do you mean? Why in you point of view
is correct (it is valid C# code) and
is not? In a both examples, types of arguments exactly the same. But, in the second line, it calculated by the compiler, not specified by user explicitly.
@paulomorgado commented on Mon Feb 09 2015
I was trying to understand your issue, and I think I got it: the compiler should be able to infer the types from usage when there are out parameters. Is that it?
@ViIvanov commented on Mon Feb 09 2015
@paulomorgado Exactly! I'm sorry for my bad and poor English.
@alrz commented on Thu Nov 19 2015
👍
@Thaina commented on Thu Jan 14 2016
+1
thanks
@asvishnyakov commented on Fri Jan 15 2016
👍
LDM Discussion
https://github.com/dotnet/csharplang/blob/main/meetings/2024/LDM-2024-02-21.md#declaration-of-refout-parameters-in-lambdas-without-typename
https://github.com/dotnet/csharplang/blob/main/meetings/2024/LDM-2024-10-16.md#simple-lambda-parameters
The text was updated successfully, but these errors were encountered: