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. What book would you recommend to learn C# from 0?

What book would you recommend to learn C# from 0?

Scheduled Pinned Locked Moved The Lounge
c++learningcsharpquestion
44 Posts 29 Posters 0 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.
  • J Joan M

    Hi all, Coming from Visual C++. I'll have a little bit of time in a while and I'd love learning C#... Which book would you recommend me? Thank you! :thumbsup:

    G Offline
    G Offline
    Gary Wheeler
    wrote on last edited by
    #2

    Pro C# 6.0 and the .NET 4.6 Platform[^] by Andrew Troelsen. I've not read this edition (I have the VS2008 version), but it was a very good introduction.

    Software Zen: delete this;

    C J 2 Replies Last reply
    0
    • J Joan M

      Hi all, Coming from Visual C++. I'll have a little bit of time in a while and I'd love learning C#... Which book would you recommend me? Thank you! :thumbsup:

      P Offline
      P Offline
      Pete OHanlon
      wrote on last edited by
      #3

      If you really want to get to the core of C#, I would recommend this book[^].

      This space for rent

      S V S 3 Replies Last reply
      0
      • J Joan M

        Hi all, Coming from Visual C++. I'll have a little bit of time in a while and I'd love learning C#... Which book would you recommend me? Thank you! :thumbsup:

        R Offline
        R Offline
        RickZeeland
        wrote on last edited by
        #4

        C# in a Nutshell, see: C# 7.0 in a Nutshell - About the Book[^] Professional C# 6 and .NET Core 1.0, see: Professional C# 6 and .NET Core 1.0 - Wrox[^] Here is a nice online C# tutorial: [Tutorialspoint]

        1 Reply Last reply
        0
        • J Joan M

          Hi all, Coming from Visual C++. I'll have a little bit of time in a while and I'd love learning C#... Which book would you recommend me? Thank you! :thumbsup:

          W Offline
          W Offline
          W Balboos GHB
          wrote on last edited by
          #5

          C# from 0, when you know C++? You really know more than you need to know in one sense. Think of C++, but a lot of the differentiation is removed. C++ made simple. For example, you don't separate namespaces by '::', but simply with a '.' No difference between ref for value and pointer ('.' vs. '->') as everything is an object and it's always a pointer so, as a short-cut, it's always '.'. The IJW nearly seamless slipping between managed and unmanaged is not so seamless (should you ever need to do it). If you use C++.NET, then your most of the way there. Really, nearly everything's the same. Now there's more to it than that, but MS was targeting the VB.NET users when the built this so they dumbed it down simplified it. VB.NET lived on, anyway. Others might, or rather, are likely to disagree with the above.

          Ravings en masse^

          "The difference between genius and stupidity is that genius has its limits." - Albert Einstein

          "If you are searching for perfection in others, then you seek disappointment. If you are seek perfection in yourself, then you will find failure." - Balboos HaGadol Mar 2010

          OriginalGriffO 1 Reply Last reply
          0
          • J Joan M

            Hi all, Coming from Visual C++. I'll have a little bit of time in a while and I'd love learning C#... Which book would you recommend me? Thank you! :thumbsup:

            J Offline
            J Offline
            Jon McKee
            wrote on last edited by
            #6

            I'd also agree on "C# in a Nutshell" by Joseph and Ben Albahari. If you ever really want to take a deep dive into C# and the CLR I highly recommend "CLR via C#" by Jeffrey Richter. In the meantime though, the Microsoft Docs on C#[^] are quite good to start off with :thumbsup:

            F 1 Reply Last reply
            0
            • P Pete OHanlon

              If you really want to get to the core of C#, I would recommend this book[^].

              This space for rent

              S Offline
              S Offline
              Slacker007
              wrote on last edited by
              #7

              :thumbsup:

              1 Reply Last reply
              0
              • P Pete OHanlon

                If you really want to get to the core of C#, I would recommend this book[^].

                This space for rent

                V Offline
                V Offline
                Vincent Blais
                wrote on last edited by
                #8

                :thumbsup:++

                Vince Remember the dead, fight for the living

                1 Reply Last reply
                0
                • W W Balboos GHB

                  C# from 0, when you know C++? You really know more than you need to know in one sense. Think of C++, but a lot of the differentiation is removed. C++ made simple. For example, you don't separate namespaces by '::', but simply with a '.' No difference between ref for value and pointer ('.' vs. '->') as everything is an object and it's always a pointer so, as a short-cut, it's always '.'. The IJW nearly seamless slipping between managed and unmanaged is not so seamless (should you ever need to do it). If you use C++.NET, then your most of the way there. Really, nearly everything's the same. Now there's more to it than that, but MS was targeting the VB.NET users when the built this so they dumbed it down simplified it. VB.NET lived on, anyway. Others might, or rather, are likely to disagree with the above.

                  Ravings en masse^

                  "The difference between genius and stupidity is that genius has its limits." - Albert Einstein

                  "If you are searching for perfection in others, then you seek disappointment. If you are seek perfection in yourself, then you will find failure." - Balboos HaGadol Mar 2010

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

                  I'd disagree to an extent: they ripped C++ to bits when they first created C# and got rid of a lot of the "dangerous" stuff - memory leak causes and so on - to create a simpler language that was faster to develop with than native C++ as a result. Since then, they have been layering on more complexity - some of it useful and justified, some of it badly abused. It's perhaps getting to the point where C# needs to be ripped apart and the same exercise done again (.NET Core would have been a good opportunity to do this)

                  Bad command or file name. Bad, bad command! Sit! Stay! Staaaay... 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

                  W D F J 4 Replies Last reply
                  0
                  • OriginalGriffO OriginalGriff

                    I'd disagree to an extent: they ripped C++ to bits when they first created C# and got rid of a lot of the "dangerous" stuff - memory leak causes and so on - to create a simpler language that was faster to develop with than native C++ as a result. Since then, they have been layering on more complexity - some of it useful and justified, some of it badly abused. It's perhaps getting to the point where C# needs to be ripped apart and the same exercise done again (.NET Core would have been a good opportunity to do this)

                    Bad command or file name. Bad, bad command! Sit! Stay! Staaaay... AntiTwitter: @DalekDave is now a follower!

                    W Offline
                    W Offline
                    W Balboos GHB
                    wrote on last edited by
                    #10

                    I was just drawing gross picture => JM said she was starting from '0'; with a C++ background that's really not the case. And if she uses C++.NET, even less so the case. My real complaints about C# were twofold: 1) MS help seemed to emphasize C# at the expense of C++. Perhaps this has changed? 2) It hides from the user the subtle differences, such as between a namespace vs. class hierarchy. One could argue - so what? As as minimalist, however, I like to know what's what. Fortunately, I've not had a project where any performance difference was a concern. Would you, in your partial disagreement, agree that the syntax, at the basic level, is such that it's almost automatic that one knows C# if one know C++ (new layers of convolution notwithstanding)?

                    Ravings en masse^

                    "The difference between genius and stupidity is that genius has its limits." - Albert Einstein

                    "If you are searching for perfection in others, then you seek disappointment. If you are seek perfection in yourself, then you will find failure." - Balboos HaGadol Mar 2010

                    OriginalGriffO 1 Reply Last reply
                    0
                    • OriginalGriffO OriginalGriff

                      I'd disagree to an extent: they ripped C++ to bits when they first created C# and got rid of a lot of the "dangerous" stuff - memory leak causes and so on - to create a simpler language that was faster to develop with than native C++ as a result. Since then, they have been layering on more complexity - some of it useful and justified, some of it badly abused. It's perhaps getting to the point where C# needs to be ripped apart and the same exercise done again (.NET Core would have been a good opportunity to do this)

                      Bad command or file name. Bad, bad command! Sit! Stay! Staaaay... AntiTwitter: @DalekDave is now a follower!

                      D Offline
                      D Offline
                      dandy72
                      wrote on last edited by
                      #11

                      At least there's nothing you're forced to use. You can keep coding using a .NET 2.0 style even though you're developing against the latest library, and the latest language features are at your disposal--which you can choose to ignore. The way it's once been described to me is that it's all "syntactic sugar". Or am I misinterpreting what you mean?

                      OriginalGriffO 1 Reply Last reply
                      0
                      • W W Balboos GHB

                        I was just drawing gross picture => JM said she was starting from '0'; with a C++ background that's really not the case. And if she uses C++.NET, even less so the case. My real complaints about C# were twofold: 1) MS help seemed to emphasize C# at the expense of C++. Perhaps this has changed? 2) It hides from the user the subtle differences, such as between a namespace vs. class hierarchy. One could argue - so what? As as minimalist, however, I like to know what's what. Fortunately, I've not had a project where any performance difference was a concern. Would you, in your partial disagreement, agree that the syntax, at the basic level, is such that it's almost automatic that one knows C# if one know C++ (new layers of convolution notwithstanding)?

                        Ravings en masse^

                        "The difference between genius and stupidity is that genius has its limits." - Albert Einstein

                        "If you are searching for perfection in others, then you seek disappointment. If you are seek perfection in yourself, then you will find failure." - Balboos HaGadol Mar 2010

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

                        W∴ Balboos wrote:

                        Would you, in your partial disagreement, agree that the syntax, at the basic level, is such that it's almost automatic that one knows C# if one know C++ (new layers of convolution notwithstanding)?

                        That's a difficult one, because moving from C++ to C# isn't necessarily as easy as you think it will be just by looking at the syntax. I came up the COBOL -> FORTRAN -> Pascal -> Assembler => C -> C++ -> C# route, and it's the superficial similarities that throw you off: you expect to need pointers and they aren't there. Same for globals, and references, and all the little nuances that you get used to in C++. So you end up trying to use C# as a "retarded brother" to C++ instead of a separate language in it's own right that shares some syntax with C++. You are actually better off forgetting C++ completely when you learn C# I think.

                        Bad command or file name. Bad, bad command! Sit! Stay! Staaaay... 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
                        • D dandy72

                          At least there's nothing you're forced to use. You can keep coding using a .NET 2.0 style even though you're developing against the latest library, and the latest language features are at your disposal--which you can choose to ignore. The way it's once been described to me is that it's all "syntactic sugar". Or am I misinterpreting what you mean?

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

                          Yes you can - but not everyone else will, so you get a lot of lazy coders using var all the time for example and to hell with the poor sod who has to maintain it in six months time!

                          Bad command or file name. Bad, bad command! Sit! Stay! Staaaay... 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

                          D 1 Reply Last reply
                          0
                          • J Joan M

                            Hi all, Coming from Visual C++. I'll have a little bit of time in a while and I'd love learning C#... Which book would you recommend me? Thank you! :thumbsup:

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

                            Always read the spec. Anything else is wrong.

                            C 1 Reply Last reply
                            0
                            • P PIEBALDconsult

                              Always read the spec. Anything else is wrong.

                              C Offline
                              C Offline
                              CPallini
                              wrote on last edited by
                              #15

                              So you are wrong ;P

                              1 Reply Last reply
                              0
                              • J Joan M

                                Hi all, Coming from Visual C++. I'll have a little bit of time in a while and I'd love learning C#... Which book would you recommend me? Thank you! :thumbsup:

                                R Offline
                                R Offline
                                Ravi Bhavnani
                                wrote on last edited by
                                #16

                                .NET Book Zero[^], without a doubt! /ravi

                                My new year resolution: 2048 x 1536 Home | Articles | My .NET bits | Freeware ravib(at)ravib(dot)com

                                R 1 Reply Last reply
                                0
                                • OriginalGriffO OriginalGriff

                                  Yes you can - but not everyone else will, so you get a lot of lazy coders using var all the time for example and to hell with the poor sod who has to maintain it in six months time!

                                  Bad command or file name. Bad, bad command! Sit! Stay! Staaaay... AntiTwitter: @DalekDave is now a follower!

                                  D Offline
                                  D Offline
                                  dandy72
                                  wrote on last edited by
                                  #17

                                  :) Of all the useless things that have been added to the language over the years, var isn't one of them. I've long been opposed to var myself, but these days, when I see I've used var in some of my older code, it generally means the exact type didn't matter to me back then, and it still shouldn't matter to me today. Some will abuse it for sure. But it's got its use.

                                  OriginalGriffO 1 Reply Last reply
                                  0
                                  • R Ravi Bhavnani

                                    .NET Book Zero[^], without a doubt! /ravi

                                    My new year resolution: 2048 x 1536 Home | Articles | My .NET bits | Freeware ravib(at)ravib(dot)com

                                    R Offline
                                    R Offline
                                    raddevus
                                    wrote on last edited by
                                    #18

                                    Ravi Bhavnani wrote:

                                    .NET Book Zero[^], without a doubt!

                                    Agree 100%! Also, get LINQPad (free at LINQPad - The .NET Programmer's Playground[^]) It's a fantastic tool for writing snippets or entire programs. Great for use with dotNet Book Zero too.

                                    1 Reply Last reply
                                    0
                                    • D dandy72

                                      :) Of all the useless things that have been added to the language over the years, var isn't one of them. I've long been opposed to var myself, but these days, when I see I've used var in some of my older code, it generally means the exact type didn't matter to me back then, and it still shouldn't matter to me today. Some will abuse it for sure. But it's got its use.

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

                                      It has it's uses - you can;t do Linq without it - but when you get lazy f'wits using it on every variable definition it's a PITA for maintenance:

                                      var i = 666;

                                      Is just lazy.

                                      var p = ComplicatedFunctionInAnotherClass(long, list, of, parameters);

                                      Is lazy, stupid, and uncaring of maintenance or the poor sod who will have to do it.

                                      Bad command or file name. Bad, bad command! Sit! Stay! Staaaay... 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

                                      L D J 3 Replies Last reply
                                      0
                                      • J Joan M

                                        Hi all, Coming from Visual C++. I'll have a little bit of time in a while and I'd love learning C#... Which book would you recommend me? Thank you! :thumbsup:

                                        C Offline
                                        C Offline
                                        Chaos_cat1
                                        wrote on last edited by
                                        #20

                                        Programming in the key of C# by Charles Petzold is excellent, especially when coming from older C-family languages

                                        1 Reply Last reply
                                        0
                                        • OriginalGriffO OriginalGriff

                                          It has it's uses - you can;t do Linq without it - but when you get lazy f'wits using it on every variable definition it's a PITA for maintenance:

                                          var i = 666;

                                          Is just lazy.

                                          var p = ComplicatedFunctionInAnotherClass(long, list, of, parameters);

                                          Is lazy, stupid, and uncaring of maintenance or the poor sod who will have to do it.

                                          Bad command or file name. Bad, bad command! Sit! Stay! Staaaay... AntiTwitter: @DalekDave is now a follower!

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

                                          OriginalGriff wrote:

                                          t has it's uses - you can;t do Linq without it

                                          Linq is itself too often used/abused when often it's really not necessary at all, it's backward syntax order is a PITA for those of us that work in multiple languages and later need to unravel some newbies 'I can do it all in one line' compound statements. I'd not loose a second sleep if it were removed entirely.

                                          signature upgrading ... please wait.

                                          OriginalGriffO 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