• 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

    • 26200 25H2 is shaping up to be a very solid and stable release, hardly any issues with it here on 3 different configurations of computers
    • Samsung Galaxy S25+ 512GB is $220 off for powerful AI and a pro-grade camera by Paul Hill Are you in the market for a premium Samsung phone? If so, check out the Samsung Galaxy S25+ with 512GB of storage. It’s on Amazon right now for just $899, down 20% from its $1,199.99 list price, representing a significant $220.99 saving. This unlocked device is marked as the number 1 new release by Amazon in the Cell Phones category. If you’re interested, act fast as it’s a limited-time deal. The Galaxy S25+ comes packed with AI features under the umbrella of Galaxy AI. Capabilities include Multiple Tasks with One Ask which brings Google Gemini integration for multi-app commands, Now Brief which proactively gives you information you need to start the day, Audio Eraser to remove distracting sounds from your videos, and advanced portrait features. Powering these features is the Qualcomm SM8750-AB Snapdragon 8 Elite (3 nm) processor which handles all sorts of tasks efficiently including gaming, translation, and photo editing. Alongside the processor is 512GB of storage and 12GB of RAM. The S25+ uses a 6.7-inch QHD+ ProScaler Display which delivers vibrant visuals thanks to its use of Dynamic AMOLED 2X with 3,120 x 1,440 resolution and 120Hz refresh rate. Regarding camera setup, the S25+ has an AI camera with 50MP main sensor, 12MP ultrawide, and 10MP telephoto with OIS. There is also a 12MP front camera. This camera setup is capable of 8K video recording, which is impressive. Finally, you get long battery life with the 4,900 mAh and 45W fast charging support so you don’t need to wait long for it to recharge. If you’re an Android user looking to upgrade to a flagship phone without paying the full price, this deal is for you. If you have an eligible phone to trade in, there is an option to do so to claim up to $725 on the upgrade with Amazon.com Gift Card credit. If you’re excited by AI, but your current phone doesn’t support many AI features, this phone could also be a smart choice. Its display is also great for media consumption, and the processor is robust. Finally, if you have a lot of files to store, the 512GB of storage should be ample. Samsung Galaxy S25+ (Icyblue): $899 (Amazon US) / MSRP $1,199.99 This Amazon deal is US-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 US deals page here. Get Prime (SNAP), Prime Video, Audible Plus or Kindle / Music Unlimited. Free for 30 days. As an Amazon Associate, we earn from qualifying purchases.
    • Sniffnet 1.4.0 by Razvan Serea Sniffnet is a network monitoring tool to help you easily keep track of your Internet traffic. Whether you want to gather statistics, or you need to inspect more in depth what's going on in your network, this app will get you covered. Sniffnet is a technical tool, but at the same time it strongly focuses on the overall user experience: most of the network analyzers out there are cumbersome to use, while one of Sniffnet's cornerstones is to be usable with ease by everyone. Furthermore, Sniffnet is completely free and open-source, dual-licensed under MIT or Apache-2.0: if you are interested you can find the full source code on GitHub. Last but not least, this application is totally developed in Rust: a modern programming language to build efficient and reliable software, emphasizing performance and safety. Sniffnet key features choose a network adapter of your PC to inspect select a set of filters to apply to the observed traffic view overall statistics about your Internet traffic view real-time charts about traffic intensity keep an eye on your network even when the application is minimized export comprehensive capture reports as PCAP files identify 6000+ upper layer services, protocols, trojans, and worms find out domain name and ASN of the hosts you are exchanging traffic with identify connections in your local network discover the geographical location of the remote hosts save your favorite network hosts inspect each of your network connections in real time set custom notifications to inform you when defined network events occur choose the style that fits you the most, including custom themes support ... and more! Sniffnet 1.4.0 changelog: New features Import PCAP files (#795 — fixes #283) Enhanced notifications (#830 — fixes #637) Donut chart reporting overall traffic statistics (#756 — fixes #687) Added support for ARP protocol (#759 — fixes #680) Identify and tag unassigned/reserved "bogon" IP addresses (#678 — fixes #209) Show data agglomerates in Inspect page table (#684 — fixes #601) Added Traditional Chinese (Taiwan) translation 🇹🇼 (#774) Added Indonesian translation 🇮🇩 (#611) A Docker image of Sniffnet is now available (#735) Improvements Added new themes A11y (Night) and A11y (Day) based on palettes optimized for Accessibility (#785 — fixes #786) Do not apply new notification thresholds while user is typing them (#777 — fixes #658) Show more information when domain name is short (#720 — fixes #696) Avoid directory traversal when selecting file name for PCAP exports (#776 — fixes #767) Add icon to window title bar (#719 — fixes #715) Update footer buttons and links (#755 — fixes #553) Handle errors to reduce the number of possible crash occurrences (#784) Updated some of the existing translations to v1.3: Portuguese (#690) Ukrainian (#692) Spanish (#805) Fixes Fix crates.io package for Windows (#718 — fixes #681) Fix crash when inserting characters longer than one byte in the text input for byte threshold notification setting (#747 — fixes #744) Remove pre-uninstall script on Linux (fixes #644) Fix typo in Russian translation (fixes #730) Minor fix to service determination algorithm in case of multicast and broadcast traffic Download: Sniffnet 64-bit | Sniffnet 32-bit ~15.0 MB (Open Source) Link: Sniffnet Home Page | Other operating systems | Screenshot Get alerted to all of our Software updates on Twitter at @NeowinSoftware
    • Anker announces global recall of five power bank models over fire safety risks by Aditya Tiwari The Chinese electronics brand, Anker Innovations, known for its mobile accessories and power banks has announced a voluntary global recall of five power bank models. The decision comes after the company spotted a potential fire hazard issue with lithium-ion battery cells from a particular vendor. Anker said that it put up a series of quality checks to detect manufacturing issues early in the production cycle, which include component level-audits and supplier testing. The company assured that "while the likelihood of malfunction is considered minimal, out of an abundance of caution, we have decided to initiate a voluntary global recall of several Anker power bank models." Here's the list of the Anker Power Bank models chosen for the global recall: Model A1257 - Anker Power Bank (10K, 22.5W) Model A1647 - Anker Power Bank (20,000mAh, 22.5W, Built-In USB-C Cable) Model A1652 - Anker MagGo Power Bank (10,000mAh, 7.5W) Model A1681 - Anker Zolo Power Bank (20K, 30W, Built-In USB-C and Lightning Cable) Model A1689 - Anker Zolo Power Bank (20K, 30W, Built-In USB-C Cable) If you think you own one of the affected power banks, you can check the model number located on the back or side of your power bank. After that, you can fill out the recall form to start the process and verify the serial number of your affected device. If your power bank is eligible for the recall, you can either get a replacement or receive a gift card for use on the Anker website. It's not offering any refunds in the US at the moment. Anker advises that you should stop using an impacted power bank immediately even if the device functions normally right now. A unit confirmed for the recall could pose the risk of overheating, melting, smoke, or fire. This is the second major recall from Anker in the same month after more than a dozen reports of fires and explosions. The company previously recalled over one million Anker PowerCore 10000 (A1263) power bank units, citing fire safety risks due to a potential issue with the Lithium-ion battery. These power banks were sold in the US from January 1, 2016 through December 31, 2022.
  • Recent Achievements

    • Collaborator
      Mighty Pen went up a rank
      Collaborator
    • Week One Done
      emptyother earned a badge
      Week One Done
    • Week One Done
      DarkWun earned a badge
      Week One Done
    • Very Popular
      valkyr09 earned a badge
      Very Popular
    • Week One Done
      suprememobiles earned a badge
      Week One Done
  • Popular Contributors

    1. 1
      +primortal
      567
    2. 2
      +FloatingFatMan
      189
    3. 3
      ATLien_0
      176
    4. 4
      Skyfrog
      112
    5. 5
      Xenon
      110
  • Tell a friend

    Love Neowin? Tell a friend!