Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • World
  • Users
  • Groups
Skins
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Code Project
  1. Home
  2. The Lounge
  3. I hate recent C# versions!

I hate recent C# versions!

Scheduled Pinned Locked Moved The Lounge
csharpquestion
92 Posts 48 Posters 25 Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • Sander RosselS Sander Rossel

    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?

    Best, Sander Azure DevOps Succinctly (free eBook) Azure Serverless Succinctly (free eBook) Migrating Apps to the Cloud with Azure arrgh.js - Bringing LINQ to JavaScript

    OriginalGriffO Offline
    OriginalGriffO Offline
    OriginalGriff
    wrote on last edited by
    #16

    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!

    "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

    1 Reply Last reply
    0
    • L Lost User

      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 :suss: "If you just follow the bacon Eddy, wherever it leads you, then you won't have to think about politics." -- Some Bell.

      Sander RosselS Offline
      Sander RosselS Offline
      Sander Rossel
      wrote on last edited by
      #17

      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.

      Best, Sander Azure DevOps Succinctly (free eBook) Azure Serverless Succinctly (free eBook) Migrating Apps to the Cloud with Azure arrgh.js - Bringing LINQ to JavaScript

      L 2 Replies Last reply
      0
      • OriginalGriffO OriginalGriff

        Some of them are pretty useful. For example:

           private void DroppedURL\_DoWork(object sender, DoWorkEventArgs e)
                {
                if (sender is BackgroundWorker worker)
                    {
                    ...
        

        Makes code much cleaner than the traditional way:

           private void DroppedURL\_DoWork(object sender, DoWorkEventArgs e)
                {
                BackgroundWorker worker = sender as BackgroundWorker;
                if (worker != null)
                    {
                    ...
        

        "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!

        P Offline
        P Offline
        PIEBALDconsult
        wrote on last edited by
        #18

        Umm ... is predates as, yes? as is intended as an improvement over is.

        L 1 Reply Last reply
        0
        • P PIEBALDconsult

          Umm ... is predates as, yes? as is intended as an improvement over is.

          L Offline
          L Offline
          Lost User
          wrote on last edited by
          #19

          `is` with a built-in `as` is new though

          P 1 Reply Last reply
          0
          • Sander RosselS Sander Rossel

            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.

            Best, Sander Azure DevOps Succinctly (free eBook) Azure Serverless Succinctly (free eBook) Migrating Apps to the Cloud with Azure arrgh.js - Bringing LINQ to JavaScript

            L Offline
            L Offline
            Lost User
            wrote on last edited by
            #20

            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 :suss: "If you just follow the bacon Eddy, wherever it leads you, then you won't have to think about politics." -- Some Bell.

            1 Reply Last reply
            0
            • L Lost User

              `is` with a built-in `as` is new though

              P Offline
              P Offline
              PIEBALDconsult
              wrote on last edited by
              #21

              Never heard of it.

              L OriginalGriffO 2 Replies Last reply
              0
              • P PIEBALDconsult

                Never heard of it.

                L Offline
                L Offline
                Lost User
                wrote on last edited by
                #22

                Maybe under other names? - `is` with "declaration pattern" - Three-operand `is` - C#7-`is`

                P 1 Reply Last reply
                0
                • D den2k88

                  C++ joined the chat

                  GCS/GE d--(d) s-/+ a C+++ U+++ P-- L+@ E-- W+++ N+ o+ K- w+++ O? M-- V? PS+ PE Y+ PGP t+ 5? X R+++ tv-- b+(+++) DI+++ D++ G e++ h--- r+++ y+++*      Weapons extension: ma- k++ F+2 X

                  D Offline
                  D Offline
                  DRHuff
                  wrote on last edited by
                  #23

                  Agreed!

                  If you can't laugh at yourself - ask me and I will do it for you.

                  1 Reply Last reply
                  0
                  • L Lost User

                    Maybe under other names? - `is` with "declaration pattern" - Three-operand `is` - C#7-`is`

                    P Offline
                    P Offline
                    PIEBALDconsult
                    wrote on last edited by
                    #24

                    Seems kludgey. We need a whole new language with everything we've learned over the past twenty years included, with cleaner syntax, rather than bits stuck on at odd angles.

                    L M 2 Replies Last reply
                    0
                    • L Lost User

                      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 :suss: "If you just follow the bacon Eddy, wherever it leads you, then you won't have to think about politics." -- Some Bell.

                      M Offline
                      M Offline
                      Marc Clifton
                      wrote on last edited by
                      #25

                      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.

                      Latest Article:
                      Create a Digital Ocean Droplet for .NET Core Web API with a real SSL Certificate on a Domain

                      L M 3 Replies Last reply
                      0
                      • P PIEBALDconsult

                        Seems kludgey. We need a whole new language with everything we've learned over the past twenty years included, with cleaner syntax, rather than bits stuck on at odd angles.

                        L Offline
                        L Offline
                        Lost User
                        wrote on last edited by
                        #26

                        The "best" part is that, like `out`-with-declaration, the declaration pollutes the scope *surrounding* the `if`. That's also annoying about the old pattern of using `as` and checking whether the result is `null`, but this new syntax syntactically suggests that it solves that long-standing annoyance and it doesn't.

                        P OriginalGriffO 2 Replies Last reply
                        0
                        • Kornfeld Eliyahu PeterK Kornfeld Eliyahu Peter

                          Be more positive - learn these additions, but use only if fits... After all - they do not force you!!!

                          "Everybody is a genius. But if you judge a fish by its ability to climb a tree, it will live its whole life believing that it is stupid." ― Albert Einstein

                          L Offline
                          L Offline
                          Lost User
                          wrote on last edited by
                          #27

                          Gone are the days when you could sit back a read a "Command" manual. You need at least a browser.

                          "Before entering on an understanding, I have meditated for a long time, and have foreseen what might happen. It is not genius which reveals to me suddenly, secretly, what I have to say or to do in a circumstance unexpected by other people; it is reflection, it is meditation." - Napoleon I

                          1 Reply Last reply
                          0
                          • B Behzad Sedighzadeh

                            Am I the only one who hates recent addings to the language? Some examples: ?? Named/optional arguments () ?[] discards :confused:

                            (_, _, area) = city.GetCityInformation(cityName);

                            Switch expressions The list can go on and on. They are trying to make programming much easier and at the same time are making the syntax more and more unreadable:mad::mad:

                            Behzad

                            L Offline
                            L Offline
                            Lost User
                            wrote on last edited by
                            #28

                            Machine Learning demands it! We're being asked to be more expressive when talking to machines. Expand our vocabulary; so as to speak.

                            "Before entering on an understanding, I have meditated for a long time, and have foreseen what might happen. It is not genius which reveals to me suddenly, secretly, what I have to say or to do in a circumstance unexpected by other people; it is reflection, it is meditation." - Napoleon I

                            1 Reply Last reply
                            0
                            • L Lost User

                              The "best" part is that, like `out`-with-declaration, the declaration pollutes the scope *surrounding* the `if`. That's also annoying about the old pattern of using `as` and checking whether the result is `null`, but this new syntax syntactically suggests that it solves that long-standing annoyance and it doesn't.

                              P Offline
                              P Offline
                              PIEBALDconsult
                              wrote on last edited by
                              #29

                              I agree with a desire to not pollute the scope with rubbish. On the other hand, maybe defining a new scope is the better solution -- define a new Method. In so many cases, when a scope becomes polluted, it's a side-effect of not splitting the logic into enough granularity. It seems like maybe C# needs a with statement :D . Or maybe not, I've never liked the with statement in languages which include it. But if C# could get with right, maybe even I would use it.

                              N 1 Reply Last reply
                              0
                              • M Marc Clifton

                                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.

                                Latest Article:
                                Create a Digital Ocean Droplet for .NET Core Web API with a real SSL Certificate on a Domain

                                L Offline
                                L Offline
                                Lost User
                                wrote on last edited by
                                #30

                                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 :suss: "If you just follow the bacon Eddy, wherever it leads you, then you won't have to think about politics." -- Some Bell.

                                1 Reply Last reply
                                0
                                • P PIEBALDconsult

                                  Never heard of it.

                                  OriginalGriffO Offline
                                  OriginalGriffO Offline
                                  OriginalGriff
                                  wrote on last edited by
                                  #31

                                  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! :laugh: 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 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

                                  P 1 Reply Last reply
                                  0
                                  • L Lost User

                                    The "best" part is that, like `out`-with-declaration, the declaration pollutes the scope *surrounding* the `if`. That's also annoying about the old pattern of using `as` and checking whether the result is `null`, but this new syntax syntactically suggests that it solves that long-standing annoyance and it doesn't.

                                    OriginalGriffO Offline
                                    OriginalGriffO Offline
                                    OriginalGriff
                                    wrote on last edited by
                                    #32

                                    I'd agree - the scope should logically be limited to the if block. It seems strange that it wasn't really ...

                                    "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 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

                                    P 1 Reply Last reply
                                    0
                                    • OriginalGriffO OriginalGriff

                                      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! :laugh: 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!

                                      P Offline
                                      P Offline
                                      PIEBALDconsult
                                      wrote on last edited by
                                      #33

                                      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 :-D .

                                      OriginalGriffO 1 Reply Last reply
                                      0
                                      • B Behzad Sedighzadeh

                                        Am I the only one who hates recent addings to the language? Some examples: ?? Named/optional arguments () ?[] discards :confused:

                                        (_, _, area) = city.GetCityInformation(cityName);

                                        Switch expressions The list can go on and on. They are trying to make programming much easier and at the same time are making the syntax more and more unreadable:mad::mad:

                                        Behzad

                                        O Offline
                                        O Offline
                                        obermd
                                        wrote on last edited by
                                        #34

                                        Syntactic sugar. Don't use it if you don't want to but some of these are useful.

                                        L 1 Reply Last reply
                                        0
                                        • O obermd

                                          Syntactic sugar. Don't use it if you don't want to but some of these are useful.

                                          L Offline
                                          L Offline
                                          Lost User
                                          wrote on last edited by
                                          #35

                                          obermd wrote:

                                          Don't use it if you don't want to

                                          You'll have to learn them, if you want to read new and foreign code-bases, so little choice there. There's a trade-off though, and I can't see how much value they add that can justify the confusion and the costs. As an industry, we'd be better of with consistency and fewer changes, saving them up for a few years and come with a decent change. Not just more sugar every umpteen months; if it were as interesting as animated icons on the desktop, then I'd be all for it, but it not even half that good, if anything, it's contra-productive and generating more costs than it is adding in value.

                                          Bastard Programmer from Hell :suss: "If you just follow the bacon Eddy, wherever it leads you, then you won't have to think about politics." -- Some Bell.

                                          J 1 Reply Last reply
                                          0
                                          Reply
                                          • Reply as topic
                                          Log in to reply
                                          • Oldest to Newest
                                          • Newest to Oldest
                                          • Most Votes


                                          • Login

                                          • Don't have an account? Register

                                          • Login or register to search.
                                          • First post
                                            Last post
                                          0
                                          • Categories
                                          • Recent
                                          • Tags
                                          • Popular
                                          • World
                                          • Users
                                          • Groups