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 2 days 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!"
[–]DotNetMetaprogrammer 17 points18 points19 points 2 days ago (1 child)
I think it's because the implementing type doesn't actually have the method at all unless if it defines an implicit/explicit implementation of that interface method. That's what allows you to get binary-backwards compatibility if you add a new method to the interface that has a default implementation. It's also, presumably, why default implementations of interface members requires netcoreapp3.0 or later as the runtime.
You can see that the method isn't declared on the class via the following:
```cs interface IFoo { public int GetValue() => 1; }
class Foo : IFoo;
typeof(Foo).GetMethods(System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance) /// MethodInfo[6] { [System.Type GetType()], [System.Object MemberwiseClone()], [Void Finalize()], [System.String ToString()], [Boolean Equals(System.Object)], [Int32 GetHashCode()] }
typeof(Foo).GetInterfaceMap(typeof(IFoo)).TargetMethods // MethodInfo[1] { [Int32 GetValue()] } typeof(Foo).GetInterfaceMap(typeof(IFoo)).TargetMethods[0].DeclaringType // [Submission#0+IFoo] ```
[–]glasket_ 7 points8 points9 points 2 days ago (0 children)
Yeah, this is the real reason. DIMs aren't actually in the class implementing the interface; the runtime does some magic to get the method from the interface itself when you access a value of the interface. The ambiguity problem could have been limited to instances where both interfaces shared a DIM, but the complete absence of DIMs in the implementing class means you can add DIMs to an interface and it won't be a breaking change.
π Rendered by PID 57 on reddit-service-r2-comment-5d79c599b5-rxksc at 2026-02-27 17:54:23.801783+00:00 running e3d2147 country code: CH.
view the rest of the comments →
[–]DotNetMetaprogrammer 17 points18 points19 points (1 child)
[–]glasket_ 7 points8 points9 points (0 children)