Skip to content
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

C# language support status #829

dgrunwald opened this issue Aug 27, 2017 · 2 comments

C# language support status #829

dgrunwald opened this issue Aug 27, 2017 · 2 comments


Copy link

@dgrunwald dgrunwald commented Aug 27, 2017

C# 1

  • XmlDoc (see also #163)
  • switch(string) (see Switch tag as well)
  • goto case -> #316
  • params
  • unsafe -> #924

C# 2 (VS 2005)

  • Generics
  • Partial types
  • Anonymous methods
  • Iterators
  • Nullable types -> Nullable<T>
  • Getter/setter separate accessibility
  • Method group conversions (delegates)
  • Co- and Contra-variance for delegates and interfaces
  • Static classes
  • Delegate inference

C# 3 (VS 2008)

  • Implicitly typed local variables
  • Object and collection initializers
  • Auto-Implemented properties
  • Anonymous types
  • Extension methods
  • Query expressions
  • Lambda expression
  • Expression trees
  • Partial methods

C# 4 (VS 2010)

  • Dynamic binding -> #154
  • Named arguments -> #950
  • Optional arguments -> #1083
  • Generic co- and contravariance
  • Embedded interop types ("NoPIA")

C# 5 (VS 2012)

  • Asynchronous methods
  • Caller info attributes

C# 6 (VS 2015)

  • Compiler-as-a-service (Roslyn)
  • Import of static type members into namespace
  • Exception filters (see #761)
  • Await in catch/finally blocks
  • Auto property initializers
  • Default values for getter-only properties
  • Expression-bodied members
  • Null propagator (null-conditional operator, succinct null checking)
  • String interpolation (see #1012)
  • nameof operator
  • Dictionary initializer
  • Allow 'Add' extension methods in collection initializers

C# 7.0 (Visual Studio 2017)

C# 7.1 (Visual Studio 2017 version 15.3)

C# 7.2 (Visual Studio 2017 version 15.4)

C# 7.3 (Visual Studio 2017 version 15.7)

C# 8.0 (Visual Studio 2019)

C# 9 (VS tbd)

@dgrunwald dgrunwald changed the title newcompiler C# language support status newdecompiler C# language support status Aug 27, 2017
Copy link

@sharwell sharwell commented Aug 28, 2017

💡 I noticed you have nameof operator crossed out. While this is typically not possible due to lack of information in the compiler output, it would be good to support it in limited cases, such as the paramName argument for ArgumentException and derived types, which is likely to align with the name of a parameter visible in the current scope.

Copy link

@sharwell sharwell commented Aug 28, 2017

💡 I noticed you have Caller Info attributes crossed out. While this is typically not possible, one way it could be leveraged is intentionally omitting arguments (and allowing defaults to apply) in cases where the IL passes literal arguments which are known to align with the actual values that would be inserted by these attributes. The CallerMemberNameAttribute would work without additional considerations. If other information is desired, the #line directive could be used to set the file name and line number for the call site.

@siegfriedpammer siegfriedpammer changed the title newdecompiler C# language support status C# language support status Sep 25, 2017
@christophwille christophwille added this to To Do in Sticky Issues Dec 21, 2017
@christophwille christophwille moved this from To Do to In progress in Sticky Issues Dec 21, 2017
@siegfriedpammer siegfriedpammer pinned this issue Dec 16, 2018
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Sticky Issues
In progress
Linked pull requests

Successfully merging a pull request may close this issue.

None yet
3 participants
You can’t perform that action at this time.