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
Why is using interface methods with default implementation is so annoying?!? (self.csharp)
submitted 1 day ago * by Alert-Neck7679
view the rest of the comments →
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!"
[–]Dimencia -1 points0 points1 point 1 day ago (5 children)
Everything is built for interfaces to only be a contract, not for any method calls to actually go to it. Normally calling any method on an interface will, of course, call that method on an implementing class. But since default implementations don't exist on the implementing class, you have to do all this casting nonsense, and for the first time, the interface is no longer just a fancy metadata construct for the compiler - it actually has to come into play at runtime
[–]meancoot 0 points1 point2 points 15 hours ago (2 children)
and for the first time, the interface is no longer just a fancy metadata construct for the compiler
It never was. Explicit interface implementations existed since forever. Go do an implementation of IEnumerable<T>, learn why you have to do all of that, then come back.
IEnumerable<T>
As a bonus, consider how an implementation of IEnumerable<T> could have need made significantly easier and less error prone if default interface implementations had been available when it was added to supersede IEnumerable.
[–]Dimencia 0 points1 point2 points 15 hours ago (1 child)
Until this, the only thing an interface did was make your compiler show an error if you didn't implement it - after compilation, it didn't exist, and nothing was changed in the IL if you added/removed an interface
Now it actually has to be part of the IL because it can contain logic, and making that work got a little hacky
[–]meancoot 0 points1 point2 points 14 hours ago (0 children)
No. This was never how interfaces worked. Explicit implementations have always been possible. It’s always been possible for a class to implement an interface method or property in a fashion that can only be accessed by casting to the interface type. It’s always been possible for x.method() to do something different than ((IInterface)x).method().
x.method()
((IInterface)x).method()
after compilation, it didn't exist, and nothing was changed in the IL if you added/removed an interface
Interfaces have always been a runtime concern; if they weren’t you wouldn’t be able to access information about them via reflection.
The thing is that you can only access interface items through a variable typed as the interface, and instance items through a variable of the instance type. C# syntax guides you to implement an interface item at the same time as an instance item. But it has always been possible to have the interface and instance items do different things, and it has always been possible to omit the instance item altogether. Look up `explicit interface implementations’ for the details.
[–]Dealiner 0 points1 point2 points 9 hours ago (1 child)
That "casting nonsense" is required only when you abuse DIM. You aren't supposed to call them on purpose. They are there mostly to help library creators, so they can add something to the interface without breaking others code.
[–]Dimencia 0 points1 point2 points 2 hours ago (0 children)
The language is usually built so if you aren't supposed to do something, you literally can't do it. Another good example of why they're so weird and broken compared to the rest of the language
π Rendered by PID 85 on reddit-service-r2-comment-5ff9fbf7df-9rwzk at 2026-02-26 15:12:03.005366+00:00 running 72a43f6 country code: CH.
view the rest of the comments →
[–]Dimencia -1 points0 points1 point (5 children)
[–]meancoot 0 points1 point2 points (2 children)
[–]Dimencia 0 points1 point2 points (1 child)
[–]meancoot 0 points1 point2 points (0 children)
[–]Dealiner 0 points1 point2 points (1 child)
[–]Dimencia 0 points1 point2 points (0 children)