|
We could call it something like B# and just copy and paste VB.NET, best language without the VB name stigma
Oh wait we don’t want something easy that can do the same job better do we
KISS principle
|
|
|
|
|
It does the null test, declares the new variable, assigns the value and completes the if in one statement. Think of it like the very old C way of doing a for loop:
int i;
...
for (i = 0; i < 10; i++) ... As opposed to the simpler version that was added in C99:
for (int i = 0; i < 10; i++) ... People complained that that was a kludge back then as well!
I was a sceptic, but once you are used to it you probably won't go back.
"I have no idea what I did, but I'm taking full credit for it." - ThisOldTony
"Common sense is so rare these days, it should be classified as a super power" - Random T-shirt
AntiTwitter: @DalekDave is now a follower!
|
|
|
|
|
I agree, yes, that's good, though I don't use C99 either.
On the other hand, I notice that there is no similar syntax for while .
|
|
|
|
|
While is more of a "general purpose" loop construct, most commonly used with things that have been already constructed, like file pointers, linked lists, strings I think. It's less likely that you'd need the declarative part since a while loop doesn't have an initialisation phase like a for loop does.
"I have no idea what I did, but I'm taking full credit for it." - ThisOldTony
"Common sense is so rare these days, it should be classified as a super power" - Random T-shirt
AntiTwitter: @DalekDave is now a follower!
|
|
|
|
|
But it could! Except then it might just be roughly equivalent to a foreach anyway.
|
|
|
|
|
Which they added to C++ anyway ...
"I have no idea what I did, but I'm taking full credit for it." - ThisOldTony
"Common sense is so rare these days, it should be classified as a super power" - Random T-shirt
AntiTwitter: @DalekDave is now a follower!
|
|
|
|
|
You can't keep anything nice. (I've only ever dabbled in C++ .)
I may need to look at D again.
|
|
|
|
|
I really like ?? since they made it possible to throw.
something = myParameter ?? throw new ArgumentNullException(...)
also handy in if statements.
Optional arguments: better than 100 overloads, but as with everything use with care.
(): If indeed value tuples - better than what we had (no more Item1, Item2)
?[]: Never used it, but I use ?. all the time -and it would be strange if ?[] wasn't available as well.
Discards: Handy when needed - do not use them a lot, but when you do they make it clear right away.
Switch expressions: Why oh why.... where they not added earlier. No more crappy switch statements full of returns or variable assignments - and a compiler warning when I am missing a state. I need to figure out how to use them nicely with enums though - I want a catch all that throws if not a defined enum value, but still want a warning if a new enum value is added and I do not handle it
And nullable in general is of course the best thing since sliced bre... no, wait - I can just eat the bread without slicing it! Just too bad it is a bit crippled as we still need to call legacy code and the required keyword isn't coming before next version.
|
|
|
|
|
lmoelleb wrote: I need to figure out how to use them nicely with enums though - I want a catch all that throws if not a defined enum value, but still want a warning if a new enum value is added and I do not handle it Once you figure it out... write a tip
M.D.V.
If something has a solution... Why do we have to worry about?. If it has no solution... For what reason do we have to worry about?
Help me to understand what I'm saying, and I'll explain it better to you
Rating helpful answers is nice, but saying thanks can be even nicer.
|
|
|
|
|
lmoelleb wrote: Switch expressions: Why oh why.... where they not added earlier. Yes, exactly!
|
|
|
|
|
Maybe you would prefer VB 6.0?
Everything on your list is stuff that I use every day (except the ?[] - hardly ever have to specifically index something.
|
|
|
|
|
Never hate.
I don't use any features of C# newer than v3.
The other week I found that I was using a Dictionary Initializer (which is a v6 feature), so I reverted it to a Collection Initializer (which is a v3 feature).
I use the ?? operator (the null-coalescing operator, a C# 2 feature) occasionally, such as when interpreting a command line.
|
|
|
|
|
Then you wont like this valid c# syntax:
if (jsonReader.TokenType is JsonTokenType.EndObject or JsonTokenType.EndArray)
{
}
Old syntax:
if (jsonReader.TokenType == JsonTokenType.EndObject || jsonReader.TokenType == JsonTokenType.EndArray)
{
}
Graeme
"I fear not the man who has practiced ten thousand kicks one time, but I fear the man that has practiced one kick ten thousand times!" - Bruce Lee
|
|
|
|
|
Yeah, still just trying to attract VB developers.
|
|
|
|
|
PIEBALDconsult wrote: Yeah, still just trying to attract VB developers.
I am seeing a lot of very old VB features creeping in. Probably for the Python crowd.
Graeme
"I fear not the man who has practiced ten thousand kicks one time, but I fear the man that has practiced one kick ten thousand times!" - Bruce Lee
|
|
|
|
|
Just like many here I use them daily.
Especially ?? and ?.
Sure as hell beats if (x != null && x.Y != null && x.Y.Z != null)...
Discards are useful when you don't need the variable (for example, when doing a TryParse, but only want to validate and not directly use the value).
Tuples are great and also beat having to write one-off classes that you'll never use again.
Are you sure you hate the features or that you hate having to keep up and not understanding them?
|
|
|
|
|
Sander Rossel wrote: Are you sure you hate the features or that you hate having to keep up and not understanding them?
That may be the case. It does seem to get harder to constantly update your skillset, but every time I've done it so far it's been well worth it in the long run.
The last big jump update was abandoning C++ (where feature creep is even worse than in C#) in favour of C#. And I have never regretted it: the speed of development and the clarity of the code is so much better - and that impacts the reliability and maintainability of the code as well.
"I have no idea what I did, but I'm taking full credit for it." - ThisOldTony
"Common sense is so rare these days, it should be classified as a super power" - Random T-shirt
AntiTwitter: @DalekDave is now a follower!
|
|
|
|
|
|
The language needs to change as marketing decrees; otherwise it looks like it has halted in it's development. They can't sell something that is tested and tried, something that is reliable. It has to be shiny and new, not boring.
That is also the reason VB6 did not die yet. It is tested, tried, reliable and doesn't change. As hard as we try, we cannot kill the beast.
Bastard Programmer from Hell
"If you just follow the bacon Eddy, wherever it leads you, then you won't have to think about politics." -- Some Bell.
|
|
|
|
|
Eddy Vluggen wrote: As hard as we try, we cannot kill the beast. Or can't we kill the beast because some of us aren't trying?
I know a developer who'd still start new VB6 projects in 2022 because that's all he knows, it works and clients are satisfied.
Why learn something new when the old still works?
This person also uses hidden controls on a form to store values, instead of using variables like the rest of us do.
Also, because it works, so why try harder?
He'll be retiring later this year and he gets to keep all of his software and clients because no one, and I mean no one, could ever unearth whatever it is that he built.
There are plenty of people like that, sort of technical quakers.
We had technology in 1999, which is what God intended, and we need nothing newer.
|
|
|
|
|
Sander Rossel wrote: I know a developer who'd still start new VB6 projects in 2022 because that's all he knows, it works and clients are satisfied.
Why learn something new when the old still works? Well, that's the entire problem; it is reliable, doesn't change, and does exactly as intended for years on end. If his clients are satisfied, then they'll pay, even if the language is not "officially" supported. To make it worse; this person will have experience, and will have solved these problems before, where we are confronted with changes to the language each six months.
Sander Rossel wrote: This person also uses hidden controls on a form to store values, instead of using variables like the rest of us do.
Also, because it works, so why try harder? I worked for someone who wrote our new flagship in C#, while I maintained the VB6 version, who put 31 booleans in a string-field in the database and claimed it to be efficient. You can be an idiot in any language, and I met some academically trained idiots too.
Sander Rossel wrote: He'll be retiring later this year and he gets to keep all of his software and clients because no one, and I mean no one, could ever unearth whatever it is that he built. You might want to learn from that
Sander Rossel wrote: There are plenty of people like that, sort of technical quakers.
We had technology in 1999, which is what God intended, and we need nothing newer. We do not change for change's sake. Improvements, very welcome; but both the UI-changes since beveled components and the changes to the language specification (with breaking cost-inducing changes) are mostly changes without improvements.
There's a cost to everything
Bastard Programmer from Hell
"If you just follow the bacon Eddy, wherever it leads you, then you won't have to think about politics." -- Some Bell.
|
|
|
|
|
Further down in this thread;
obermd wrote: Don't use it if you don't want to That's exactly what happened and why VB6 still exists.
Bastard Programmer from Hell
"If you just follow the bacon Eddy, wherever it leads you, then you won't have to think about politics." -- Some Bell.
|
|
|
|
|
Eddy Vluggen wrote: The language needs to change as marketing decrees; otherwise it looks like it has halted in it's development.
Actually, if you look at the arc of the language changes (particularly the earlier ones) you can see how they evolved to add functional programming capabilities which was definitely needed to support mixed C#/F# programming styles. I tend to think that was the overall plan by Anders Hejlsberg rather than being driven by market forces. That said, yeah, lately it seems there's more of a "what can we change to keep it looking fresh" attitude, though again, I still think Anders is at the helm and wanting to push C# into what might be considered uncharted territories, though still, much of what he's doing has already been done, even if obscurely in languages like APL.
|
|
|
|
|
If Anders had better idea's, he should have proposed and explained them. Then we'd talk about it. C# and F# are rather distinct languages; you can use both in the same runtime, so no problem there. You don't even want C# to be F#, they're not meant to do the same thing.
He's not at the helm, Marketing is.
Bastard Programmer from Hell
"If you just follow the bacon Eddy, wherever it leads you, then you won't have to think about politics." -- Some Bell.
|
|
|
|
|
to me it seams, what C# programmers at the beginning used to point out as strong points of the language vs JavaScript have all been silently masked. pushed under the carpet. but, maybe that's only superficial and maybe it's only in my head. much like windows is becoming more linux like, at least in the shell.
probably the first joke a C# developer would make to a JavaScript kid was how they are allowed to write var person = new Person , instead of the C# more precise and knowledgeable Person person = new Person() . because only a good programmer knows that from a Person constructor you get a Person object and if you are that good, you also have to declare it in code. but, that's history now.
what always has struck me as odd, in stiff languages like Java and C#, was the need to write new in front of the constructor. like they were trying to say, look WE KNOW that this thing goes on the stack. alas, instances of class have nowhere else to go, unlike in C++ where you need to specify. but, maybe some day that also will be gone... only the thousands of pre 2010 articles by OOP zealots mocking JavaScript "kids" will remain, making a person scratch it's head in year 2030 that there was a time of the venerable Java/C# programmer and the rogue JavaScript kid that had it so much easier(ignoble) to do things. at least that would be great, but then again thousands of those shameful articles will be erased "for the good of the country" as they say.
|
|
|
|
|