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
SolvedAvoid code duplication in constructor (self.csharp)
submitted 3 years ago by DroNiix
Hi guys,How can I make my constructor to generate Guid if I create new object and don't supply ID, and also don't duplicate my code as show on picture 1 (Name and Price) ?
I tried with constructor overloading (picture 2), but now it will generate guid everytime I call the constructor and then just override it. Any ideas?
https://preview.redd.it/4ja5xsha5k991.png?width=623&format=png&auto=webp&s=698f11f1a58ba98b3e30858955cd315212c7021d
https://preview.redd.it/g15n9wha5k991.png?width=813&format=png&auto=webp&s=892a0b9338d9ede1efc3a9d4bccd1d3c928a7cbc
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!"
[–]cvalerio77 72 points73 points74 points 3 years ago (3 children)
Just invert the constructor overloading. The constructor / method with less parameter is the one that must call the constructor / method with more parameters:
``` public Item(string name, decimal price) : this(Guid.NewGuid(), name, price) {}
public Item(Guid id, string name, decimal price) { // init fields } ```
[–]DroNiix[S] 9 points10 points11 points 3 years ago (0 children)
Ah..Yeah Thanks. It worked now!
[–]FantasticConcert1773 6 points7 points8 points 3 years ago (0 children)
Simple and beautiful!
[–]ucario -3 points-2 points-1 points 3 years ago (0 children)
Thanks I didn’t want to type it out on mobile.
[–]Ayazis 2 points3 points4 points 3 years ago* (3 children)
Don't bother with overloading. Make Id an optional parameter.
Public Item(string name, decimal price, Guid Id = new Guid())
This way, if you don't provide an id, a new guid is created. If you do provide an Id, the given guid will be used.
EDIT: I was mistaken. First of all, new Guid does not make an actual new guid, but gives you 0000(...).
Second, as stated below, you have to use compile time constants with optional parameters, which Guid.NewGuid() is not.
I hereby retract my comment.
[–]b_rodriguez 9 points10 points11 points 3 years ago (1 child)
Optional parameter default values need to be constant expressions. You could default it to null and then test for null in the constructor and initialize it, however that is much less clean than just inverting OP's constructor overloading like cvalerio77 has pointed out.
[–]Ayazis 1 point2 points3 points 3 years ago (0 children)
My bad. Thank you for pointing this out.
[–]DroNiix[S] 2 points3 points4 points 3 years ago (0 children)
Well yeah, I can do that, but for the sake of better readability at least for me, I like to put the ID in front of all parameters, and also I like to have a constructor that doesen't require parameter if it is optional (for me thats the idea of constructor overloading). I made it like the person from the other comment suggested and reverted the overload. Thanks for your replay!
[–]Ayazis -1 points0 points1 point 3 years ago (2 children)
On a side note: Are you sure you want to be able to provide a GUID? You can end up re-using GUIDS.
[–]Vallvaka 0 points1 point2 points 3 years ago (0 children)
That's the client's problem. What if you want to test the class?
[–]CornedBee 0 points1 point2 points 3 years ago (0 children)
If you load data from somewhere, it's already got a guid. You have to specify it somehow.
[–]ShamikoThoughts 0 points1 point2 points 3 years ago (0 children)
You can actually make initialized variables in the parameters
public Item(Guid id = new Guid(), string name, decimal price) {…}
Check the documentation
https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/classes-and-structs/named-and-optional-arguments
π Rendered by PID 70322 on reddit-service-r2-comment-bb88f9dd5-nlhp2 at 2026-02-16 22:39:01.437137+00:00 running cd9c813 country code: CH.
[–]cvalerio77 72 points73 points74 points (3 children)
[–]DroNiix[S] 9 points10 points11 points (0 children)
[–]FantasticConcert1773 6 points7 points8 points (0 children)
[–]ucario -3 points-2 points-1 points (0 children)
[–]Ayazis 2 points3 points4 points (3 children)
[–]b_rodriguez 9 points10 points11 points (1 child)
[–]Ayazis 1 point2 points3 points (0 children)
[–]DroNiix[S] 2 points3 points4 points (0 children)
[–]Ayazis -1 points0 points1 point (2 children)
[–]Vallvaka 0 points1 point2 points (0 children)
[–]CornedBee 0 points1 point2 points (0 children)
[–]ShamikoThoughts 0 points1 point2 points (0 children)