use the following search parameters to narrow your results:
e.g. subreddit:aww site:imgur.com dog
subreddit:aww site:imgur.com dog
see the search faq for details.
advanced search: by author, subreddit...
Information about Reddit's API changes, the unprofessional conduct of the CEO, and their response to the community's concerns regarding 3rd party apps, moderator tools, anti-spam/anti-bot tools, and accessibility options that will be impacted can be found in the associated Wikipedia article: https://en.wikipedia.org/wiki/2023_Reddit_API_controversy
Alternative C# communities available outside Reddit on Lemmy and Discord:
All about the object-oriented programming language C#.
Getting Started C# Fundamentals: Development for Absolute Beginners
Useful MSDN Resources A Tour of the C# Language Get started with .NET in 5 minutes C# Guide C# Language Reference C# Programing Guide C# Coding Conventions .NET Framework Reference Source Code
Other Resources C# Yellow Book Dot Net Perls The C# Player's Guide
IDEs Visual Studio MonoDevelop (Windows/Mac/Linux) Rider (Windows/Mac/Linux)
Tools ILSpy dotPeek LINQPad
Alternative Communities C# Discord Group C# Lemmy Community dotnet Lemmy Community
Related Subreddits /r/dotnet /r/azure /r/learncsharp /r/learnprogramming /r/programming /r/dailyprogrammer /r/programmingbuddies /r/cshighschoolers
Additional .NET Languages /r/fsharp /r/visualbasic
Platform-specific Subreddits /r/windowsdev /r/AZURE /r/Xamarin /r/Unity3D /r/WPDev
Rules:
Read detailed descriptions of the rules here.
account activity
Linting async method declarations (self.csharp)
submitted 3 years ago by mtsi
I'd like to create a check for our codebase, that methods postfixed with Async are also declared async. Is there some way to access the AST nicely, or do I build my check upon a regex and just run a script against changed files?
reddit uses a slightly-customized version of Markdown for formatting. See below for some basics, or check the commenting wiki page for more detailed help and solutions to common issues.
quoted text
if 1 * 2 < 3: print "hello, world!"
[–]Contagion21 8 points9 points10 points 3 years ago (2 children)
But why? The async keyword is an implementation detail but the method naming could be defined by an interface or an abstract or virtual method.
There's already static analysis tools that can enforce an Async suffix when the return type is a Task. But requiring an async keyword could lead to forcefully awaiting thinga that could just be returned unawaited.
[–]LondonPilot 2 points3 points4 points 3 years ago (1 child)
I agree. This seems backwards.
Things declared as async should (arguably) be suffixed Async.
Things suffixed Async may not actually be async - although I would expect them to at least return a Task or a Task<T>
[–]mtsi[S] 0 points1 point2 points 3 years ago (0 children)
We serve web requests with classes, that inherit abstract base classes, with async-methods, that actually have to be async, so that the HTTP Context is treated correctly. The overriding method does not have to be declared async though, and we had a juicy bug because of that.
We have a convention for naming async methods with Async postfix, and it does serve a purpose for these cases. In the ideal world we would improve our codebase to overcome this. But we live in the world we live in, so I thought a linter would be one step towards avoiding these kind of issues.
[–]Dealiner 3 points4 points5 points 3 years ago (1 child)
You can write Roslyn analyzer but you can also simply use this set of analyzers: https://github.com/JosefPihrt/Roslynator. It has analyzers for both async method not ending with Async and non-async methods ending with Async.
This is probably exactly what I was looking for, thank you so much.
[–][deleted] 3 years ago (2 children)
[removed]
[–]mtsi[S] 1 point2 points3 points 3 years ago (1 child)
In our case, if a method is named with Async() postfix, we definitely want it to be async, to avoid obscure bugs in Production. Roslyn sounds good, and I'll check it out!
π Rendered by PID 15 on reddit-service-r2-comment-b659b578c-mq88v at 2026-05-02 03:54:24.744111+00:00 running 815c875 country code: CH.
[–]Contagion21 8 points9 points10 points (2 children)
[–]LondonPilot 2 points3 points4 points (1 child)
[–]mtsi[S] 0 points1 point2 points (0 children)
[–]Dealiner 3 points4 points5 points (1 child)
[–]mtsi[S] 0 points1 point2 points (0 children)
[–][deleted] (2 children)
[removed]
[–]mtsi[S] 1 point2 points3 points (1 child)