Are User-Defined Literals Necessary in C#?
Source: Dev.to
โ ๏ธ Collection Error: Content refinement error: Error: 429 429 Too Many Requests: you (bkperio) have reached your weekly usage limit, upgrade for higher limits: https://ollama.com/upgrade
A Step Toward Meaningful Values
Conclusion
This is not a new idea. ๐ It is a continuation of how C# has been evolving. Giving meaning directly to values is a natural evolution of C#. C# has been moving in this direction for years. This article proposes User-Defined Literals (UDL) as a natural var duration = 123;
We donโt know: seconds?
milliseconds? No meaning. 123.Milliseconds()
Meaning depends on API. Traditionally, meaning is attached after the value is created. UDL shifts that boundary. Values themselves have no meaning. var duration = 123_ms;
Now: Type is known
Meaning is known Meaning is embedded in the value. C# has already evolved: foreach (pattern-based)
await (pattern-based)
using (pattern-based) Language privileges have been opened. See also:
https://dev.to/shimodateakira/why-c-keeps-opening-its-syntax-and-why-it-matters-3l7f) Literal = compile-time constant Not true. var s = $โ{DateTime.Now}โ;
Literal is syntax, not evaluation timing. APIs attach meaning later
Literals carry meaning immediately This is not syntax sugar. Itโs a design shift. So the real question is: Should values themselves carry meaning? And if so: How far should C# go in that direction? Iโm curious how others see this. Is this a natural evolution of C#, or are we just moving complexity from APIs into the language itself?