• 0

Going to C# from heavy Python experience


Question

Hey there! I'm a noob and I need help.

 

 

I've been given certain liberties on my companies next GUI adventures and after enough research I've decided I'm going with Visual C#. The ease of Visual Studio with the friendliness of C# seems like an excellent combination. The only problem is.... I don't really know C#. I get the basic Syntax, it's pretty straight forward as I have quite a bit of experience with PHP (and less so with C) but I know I need to drastically improve. Partial Classes, for example, scare me. Although so does this odd thing known as compiling and strong typing.

 

 

Answer Guide:

Keep in mind I'm a visual person and have never been very good with books. Sure I can read and comprehend but I have a much easier time with watching by example and taking apart other peoples code on github or something. This doesn't mean I don't want books, just that they are second fiddle.

 

Question:

As a heavy Python3/Qt4/MySQL programmer where is the best place to start learning C#?

 

Are there any projects you know of written in C# that would be easy for me to dissect?

 

Do you have any experience with both Python and C# and know a thing or two about important differences / "gotchas"?

 

 

Thanks a ton!

14 answers to this question

Recommended Posts

  • 0

If you've done a lot of any object-oriented language then the syntax of C# should not be a huge issue. Stackoverflow has an awesome C# community, if you ask a question there it usually gets answered in 5 minutes. I'm an expert on C# and .NET so I can probably answer most of your questions as well.

 

I think the bigger change from Python is getting to know .NET, the underlying platform: how code is compiled into assemblies, how assemblies can reference each other, how garbage collection works in regards to reference and value types, all the basic types in the root System namespace (Object, String, Type, etc.) that sort of thing. .NET is a wonderful development environment with excellent documentation, comprehensive, high quality libraries, and this is reflected in many independent open-source projects that build on the platform. Personally, I'm totally spoiled and wouldn't use anything else these days. C# was consistently designed as a "pit of success": usually the most obvious thing to do is the best thing to do (unlike in some other *cough languages).

 

If you're going to do GUI programming, WPF can be a pretty tough pill to swallow. Try to focus on one thing at a time.

 

Coming from Python you're likely used to exploratory programming inside the REPL. Visual Studio doesn't provide a C# REPL, but LINQPad is a great alternative.

 

I'm not convinced of the value of learning by reading other code; perhaps you can understand it but it'll be hard for you to figure out why it was coded this way. A really good book for experienced programmers is C# in a Nutshell. For an in-depth treatment of the .NET platform (once you have some experience with it), read CLR via C#.

  • 0
  On 03/06/2014 at 01:02, Andre S. said:

. . .

 

I'm glad you're an expert. For the most part I'm fairly self-sufficient but I may ask direct C# questions from time to time (so long as I haven't found something on S.O. yet).

 

I agree on C#, it looks like a wonderful language so far and I'm a bit disappointed I overlooked it the first time around. I believe there were some issues with Linux compatibility at the time that immediately removed it from my "check it out" list. Now that's no longer of concern.

 

I've been working out the Windows Form Application but haven't touched WPF; I'll stay away for now. WFA however is very straight forward and simple.

 

I don't really touch the REPL much these days but I agree it was a big help in the beginning, I'll take a look a LINQPad. Thanks.

 

I read other peoples code not to understand the syntax but the reasoning. I don't generally get into that until I have a firm grasp of the language, but the one thing I don't want to happen is code Python in C#. There is a C# way of doing things and in general other peoples code are a good indicator of those methods. I've never been formally taught so I have to learn formalities and methodologies the hard way, unfortunately.

 

Thanks for the help. I'll check those books out.

  • 0
  On 03/06/2014 at 01:31, astropheed said:

I've been working out the Windows Form Application but haven't touched WPF; I'll stay away for now. WFA however is very straight forward and simple.

It's usually referred to as WinForms. ;)

  • 0
  On 03/06/2014 at 01:02, Andre S. said:

.NET is a wonderful development environment with excellent documentation, comprehensive, high quality libraries, and this is reflected in many independent open-source projects that build on the platform. Personally, I'm totally spoiled and wouldn't use anything else these days. C# was consistently designed as a "pit of success": usually the most obvious thing to do is the best thing to do (unlike in some other *cough languages).

 

I'm having a really good time with it so far. I wish I got into this much sooner.

 

Update:

I enjoy the type system. I didn't think I'd like strongly typed languages (I didn't like it in C) but I actually find it gives a certain peace of mind after a while. I'm not a fan of using the 'new' keyword to instantiate a new object reference (and arrays), but, I guess I'll just have to deal (I'm not a big fan of the explicit 'self' parameter in Python methods either, so...win some, lose some).

 

I've got the basics down, including Structs, Enums, Classes, Arrays and anything easier than those. Having a heck of a time. I haven't touched generics or threads, but I don't think they'll be too difficult. Time will tell.

  • 0
  On 05/06/2014 at 01:48, astropheed said:

I'm having a really good time with it so far. I wish I got into this much sooner.

 

Update:

I enjoy the type system. I didn't think I'd like strongly typed languages (I didn't like it in C) but I actually find it gives a certain peace of mind after a while.

To be precise, C# is statically typed whereas Python is dynamically typed, i.e., every identifier has a fixed type which can be figured out just by looking at the code, whereas in Python types are assigned and can change at run time. The terms "weak" and "strong" typing don't have well-defined meanings.

 

Glad to know you're having fun with it!

  • 0

I always recommend csharp-station to people looking to learn C#. The tutorials are well written, short enough not to feel overwhelming, but long enough to give you all of the basics that you need. And as Andre suggested, Stack Overflow is an invaluable tool. Definitely consult that site when you run into a problem.

  • 0
  On 05/06/2014 at 01:59, spacer said:

I always recommend csharp-station to people looking to learn C#. The tutorials are well written, short enough not to feel overwhelming, but long enough to give you all of the basics that you need. And as Andre suggested, Stack Overflow is an invaluable tool. Definitely consult that site when you run into a problem.

 

Right now I'm reading "C# Yellow Book" by Rob Miles. I like the way he breaks things down with some light humor thrown in. After which I will read "C# in a nutshell" which I've ordered online and just waiting to arrive. If by the end of that 1000 page "nutshell" I need a bit more I'll take a look at your suggestion. I'm also reading "Code The Hidden Language" and "The C Programming Language" in the meantime as suggested by Joel Spolsky from Stack Exchange. 

 

I just can't take on anymore books right now lol. I will however look into it.

 

 
  On 05/06/2014 at 01:59, Andre S. said:

C# is statically typed whereas Python is dynamically typed

 

Sorry, still not very good at terminology. I'm a decent to pretty good programmer, but as I was all self taught the terminology sometimes escapes me; if I even know it at all.

  • 0
  On 05/06/2014 at 01:48, astropheed said:

Update:

I enjoy the type system.

 

Small note about that. The types in C# are aliases for the actual types in .NET. In that fashion, int is an alias to Int32, long to Int64, and so on. You might find it sometimes to be more appropriate to use the .NET types, particularly if you share code with non-C# .NET developers (VB.NET, F#...). They would know exactly what the types are, instead of going through C# documentation to read on what "long" means.

 

It is something so simple, and it really depends on your usage, but it is something to give a thought or two about. Personally, I've started to use the .NET types, thus I'm getting a clear distinction between types and other C# keywords (they're not with the same colour). Not that it matters that much, but still, I like my cake this way! :laugh:

  • 0

I personally go by what the language specification recommends:

 

  Quote
Each of the predefined types is shorthand for a system-provided type. For example, the keyword int refers to the struct System.Int32. As a matter of style, use of the keyword is favored over use of the complete system type name. http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-334.pdf (page 18)
  • 0
  On 05/06/2014 at 02:30, elenarie said:

Personally, I've started to use the .NET types, thus I'm getting a clear distinction between types and other C# keywords (they're not with the same colour). Not that it matters that much, but still, I like my cake this way! :laugh:

 

  On 05/06/2014 at 04:08, Andre S. said:

I personally go by what the language specification recommends

 

 

I have to take one of your sides, and Andre is Green. If Ruby Rod taught me anything it was that it must be green. Thanks guys though, I'm glad I know it's an alias.

  • 0

It seems like you are well on your way with C# and the .NET framework. My story was different... I started with C# etc... but switched to Python because of its no brainer syntax. However, my days with C# is far from over and I still sometimes go back to it when I am building a web based enterprise application. .NET has some awesome libraries that makes things much faster.

 

Anyhow, I would feel really bad if you found the following tools later than now. I don't want you to spend your wheels and waste too much time because the following tools and resources made my applications look super awesome even though I was still a complete noob ;)... don't tell that to my employers now!

 

DevExpress

https://www.devexpress.com/

 

Excellent .NET controls for ASP.NET and C# desktop applications.

 

Total Training for .NET/C#

http://totaltraining.com/store/asp-net-2-0-building-web-applications-bundle/

http://www.youtube.com/playlist?list=PL25CE22D4AA564934 ;)

 

Probably the best video tutorial series I came across for .NET stuff. The basic C# was well enough but the ASP.NET part also made me very comfortable toward the web.

  • 0
  On 09/06/2014 at 16:02, roosevelt said:
<snip>

 

DevExpress

https://www.devexpress.com/

 

Excellent .NET controls for ASP.NET and C# desktop applications.

 

<snip>

 

Personally, I'd stay away from those if at all possible, far too much bloat ;)

  • 0
  On 09/06/2014 at 16:02, roosevelt said:

It seems like you are well on your way with C# and the .NET framework. My story was different... I started with C# etc... but switched to Python because of its no brainer syntax. However, my days with C# is far from over and I still sometimes go back to it when I am building a web based enterprise application. .NET has some awesome libraries that makes things much faster.

 

Anyhow, I would feel really bad if you found the following tools later than now. I don't want you to spend your wheels and waste too much time because the following tools and resources made my applications look super awesome even though I was still a complete noob ;)... don't tell that to my employers now!

 

DevExpress

https://www.devexpress.com/

 

Excellent .NET controls for ASP.NET and C# desktop applications.

 

Total Training for .NET/C#

http://totaltraining.com/store/asp-net-2-0-building-web-applications-bundle/

http://www.youtube.com/playlist?list=PL25CE22D4AA564934 ;)

 

Probably the best video tutorial series I came across for .NET stuff. The basic C# was well enough but the ASP.NET part also made me very comfortable toward the web.

 

Ah, thanks for that. I may at some point actually use devexpress, very pretty.

 

As for the video series, thanks but I have little interest in using ASP.NET.

  • 0

Not sure if someone has already posted this or you have already looked at but check out http://code.msdn.microsoft.com/

 

You can pretty much get any code sample by filtering it from the left.

 

For 3rd party WinForms controls, I can vouch for DevExpress controls. Been using them since 2003. Great controls and excellent support and cuts down a lot of development time.

This topic is now closed to further replies.
  • Posts

    • LG gram Book 15U50T: Is this lightweight laptop the right upgrade for you? by Paul Hill If you’re in the UK looking for a new mid-range laptop that won’t feel underpowered, check out the LG gram Book 15U50T now because it’s at its all-time lowest price on Amazon UK thanks to a 14% discount from its £699.99 RRP. You can get it now for just £599.99 (Buying link at the end). At this price, the laptop definitely makes this mid-range option much more appealing, it’s also pretty new having only come out in January 2025, so you’re definitely getting more value for your money. The delivery is free and will take a few days to arrive unless you take advantage of a Prime member trial and get it next-day in time for Father’s Day. LG gram Book 15U50T: Key features and who it's for The LG gram Book 15U50T features a 15.6-inch Full-HD (1920x1080) anti-glare IPS display, making it ideal for use in well-lit areas as you won’t see yourself staring back. It’s powered by an Intel Core i5 processor (1334U), 16GB of RAM, and has a very fast 512GB NVMe Gen4 SSD. In my opinion, the storage might be a bit tight for some users; however, the device comes with two M.2 slots if you want to upgrade the storage. The LG gram Book 15U50T is ideal for students or professionals who need a device to carry with them out and about. It has an ultra-lightweight design and weighs just 1.65kg - that’s not too far off a similarly sized MacBook Air, but for a fraction of the cost. In terms of ports, there is an HDMI port, two USB-A ports, and two USB-C ports. There's also a 3.5mm headphone jack if you need to plug in headphones. Other noteworthy details about this laptop include that it's running Windows 11 Home with Copilot integration, it has a HD webcam with a privacy shutter, it uses Dolby Atmos audio for immersive sound, and it has a unique feature called gram Link for multi-device (including Android and iOS) connectivity. Should you buy it? If you are a student or a professional that won’t be doing heavy gaming, or using other super intensive applications, this laptop is a solid pick. It’s lightweight - so easy to carry around, it has an anti-reflective screen - so good in well-lit environments; and it features upgradeable storage slots if 512GB is not enough space. On the downside, this laptop has a mid-range processor that could limit your ability to use high-end professional tools. Another thing I’m not really a fan of here is how opaque LG has been with the battery life. As a portable laptop, you’re obviously going to want to take it on the go where you don’t have a charger handy, but all LG says about the battery is that it has a capacity of 51Wh. According to some online sources, variants of this laptop manage about 7 to 10 hours, so if you need a super long battery life, you might be better off with something like a MacBook Air. So should you buy it? If you’re not going to be doing anything super intensive, but can’t stand underpowered and slow budget laptops then this could be the ideal laptop for you. The £100 discount makes it even more appealing! LG gram Book 15U50T: £599.99 (Amazon UK) / RRP £699.99 This Amazon deal is U.K. specific, and not available in other regions unless specified. If you don't like it or want to look at more options, check out the Amazon UK deals page here. Get Prime, Prime Video, Music Unlimited, Audible or Kindle Unlimited, free for the first 30 days As an Amazon Associate we earn from qualifying purchases.
    • Totally different vehicles. Uber has partnered with Waymo for level 5 autonomous vehicles. Waymo has completed 10 million trips and to date, there have been 696 accidents in 4 years and of those 16 of them appear to have been due to an error by the car. In total airbags have only been deployed 38 times. The technology should always be under review and continued to be improved on, but this is a totally different animal to Tesla FSD PS. no I don't work for them etc. I am an analyst for a market intelligence firm and we have a lot of interest from clients looking at the connected car space for advertising etc. so I have studied them
    • But it's not full self driving it's level 2 autonomy. Audi, BMW and Mercedes all have level 3 and make far less noise about it
    • Edge for Business gets secure password deployment for organizations by Paul Hill Microsoft Edge for Business now offers organizations secure password deployments as a generally available feature, the Redmond giant said. Instead of users sharing passwords on sticky notes or via email to access certain websites or tools, admins can deploy encrypted shared passwords to specific users within their organization. When a user receives a password, it is stored in their Edge password manager and can be used to log into websites seamlessly using autofill. Microsoft has made this enterprise-grade solution available to customers at no additional cost. How it works and the user experience Administrators have to manage the feature via the Microsoft Edge management service within the Microsoft 365 admin center. From there, they can add, update, and revoke credentials for specific user groups through configuration policies. Once an admin has set it up and shared passwords with users, the users will see the passwords in their Edge password manager and can be used with autofill on corresponding websites. The passwords are tied to work profiles in Edge on managed Windows devices to limit their misuse. Further boosting security, the shared passwords cannot actually be viewed, edited, or deleted (unless the website allows), or exported from the password manager. This is a good addition for security because if an unauthorized user gains physical access to the computer, they cannot learn what the password is. Administrators reading this do need to be aware of an important caveat related to developer tools. A motivated user who wants to reveal the passwords can do so by digging into the developer tools, for this reason, you should consider restricting access to the developer tools by configuring the DeveloperToolsAvailability policy. The underlying security and encryption Microsoft’s new secure passwords feature has been built using the Information Protection SDK. The passwords are encrypted and the encryption is tied to Entra identities which lets organizations enforce them without manual key management. The decryption of the passwords takes place at runtime using the same SDK, validating the user’s identity. Availability and getting started Secure password deployment is available through the Edge management service in the Microsoft 365 admin center. Once in the admin center, you should choose an existing configuration policy or create a new one. Inside the policy, go to the Customization Settings tab and then to the Secure password deployment page. To use this feature you must have a Microsoft 365 Business Premium, E3, or E5 subscription. The feature also requires the Edge admin or Global admin role. Source: Microsoft
    • Is it though?  I built a new rig a few months ago and it was literally impossible to get one without RGB, but within 10 minutes of setting it up, I turned all that crap off.  It was REALLY distracting, and who needs additional heat INSIDE a PC? It's popular on YouTube for sure, it's neat looking and whatnot, but it's about as practical as a coffee cup with a hole in it. As for the price, a non-enthusiast would just see something priced way above what they can get from a retailer brand new...
  • Recent Achievements

    • Week One Done
      somar86 earned a badge
      Week One Done
    • One Month Later
      somar86 earned a badge
      One Month Later
    • Apprentice
      Adrian Williams went up a rank
      Apprentice
    • Reacting Well
      BashOrgRu earned a badge
      Reacting Well
    • Collaborator
      CHUNWEI earned a badge
      Collaborator
  • Popular Contributors

    1. 1
      +primortal
      504
    2. 2
      ATLien_0
      260
    3. 3
      +Edouard
      187
    4. 4
      +FloatingFatMan
      175
    5. 5
      snowy owl
      132
  • Tell a friend

    Love Neowin? Tell a friend!