Taking C# (2.0) To The Next Level

Hi Unity,

I’m here because I have hit a plateau of sorts. I am very interested in furthering my knowledge of C# (3.5) in order to be a better developer, but finding a C# book that caters specifically to its usage within Unity has proven to be difficult.

I want to take my knowledge of C# from advanced to expert, while still constraining myself so that I don’t learn needless classes/syntax that I will never use (due to Unity/Mono framework’s restrictions).

With that being said, are there any arguments against learning just C#<=3.5? Should I expand my knowledge of C++ first in order to write custom libraries for C#? Should I learn C# 3.5+ just in case Unity ever updates their supported C# version? I’m just looking for the next logical step to better my skill set.

Thanks!

Addison

Unity will absolutely be upgrading to support the latest C# at some point, it’s just a matter of when. I see no reason not to learn the latest C# information. You just have to know what works and what doesn’t in Unity.

As for learning C++, that depends on your goals. Do you want to write native libraries for Unity? Do you want to go out into the industry and get hired? Is it a hobby?

If you simply want to be more skilled as a programmer, then I would recommend learning C++ and low level programming in addition to using Unity. You’ll learn many things that Unity will hide from you.

Thanks for the response.

I’m currently working in the industry as an AR/VR/MR developer - but feel hindered to a big extent by my very specific skill set. I would love to learn how to write native libraries - but seeing as how there’s so much to C++, I feel like I’m looking for a more immediately applicable set of C++ skills, rather than just delving into C++ as a whole.

I would say my main goal is to be the best Unity developer I can be, but my secondary goal is to be a very versatile, poly-language programmer in ways that support my Unity development career.

So the question here I suppose is whether to delve further into C#, or dig into C++ and start writing native libraries.

By all means, you should learn anything and everything you can. There is no such thing as useless knowledge. You just have to be smart enough to know how and when to apply it. Learning c++ might give you a lot of insight into computer languages themselves. Learning more c# might give you more insight into the theory of software design. There’s reason enough to learn any language.

I wil say this about c++ though: There is no dabbling in it if you are serious about writing real code that will be in production. You absolutely must be familiar with it or your programs will have serious bugs.

1 Like

My optimisations and tricks for the Amiga are pretty useless :slight_smile:

2 Likes

If you’re looking into using a lower level language to write libraries you should probably take a look at Rust. C++ is great but Rust far surpasses it in terms of safety. Most of the time when using Rust I end up writing much shorter and easier to understand code.

From my Atari days…

POKE 752, 1

Turns off the cursor. Used to attach that to a display interrupt to make the cursor blink. Definitely useless knowledge and it’s taking up precious synapses that I can ill afford to spare these days.

For OP, soak up everything you can that interests you.

1 Like

If you know C# 3.5, then it’s not going to be particularly hard to learn C# 6. Just read the “What’s New” page from the last few versions of Visual Studio on MSDN, and maybe a couple of blog posts from the MS devs about some of the new features. Learning a handful of new features and shortcuts isn’t like learning a whole new language.

@Sluggy1 Thanks for the comment. I am definitely considering your advice. I downloaded Xamarin and made a native Android app with their C# wrappers as a test to see how much C# I know vs. how much Unity-based C# I know. It appears to be a huge difference - namely the lack of magic methods like Awake, Start, Update, etc.

While I can see where you’re coming from as far as the “no knowledge is useless” notion, I would say that there are a lot of languages/concepts that a Unity-focused developer such as myself wouldn’t really benefit from due to lack of application.

@Dave-Carlile Good example. I am often concerned that things I learn will be deprecated or phased out - but it seems my time spent learning Unity’s API as well as C# have really paid off considering nearly every AR/VR device’s SDK is written with Unity3D in mind as their primary development environment.

@makeshiftwings Thanks for the input. I’ve been working with Xamarin since last night and it’s really given me a chance to see that the version of C# that you’re working with, while not trivial, is much less important than I imagined. I guess I thought it would be like switching from Unity 3 to Unity 5 - but it’s much more subtle. Still, I’d hate to learn new tricks and then not be able to use them. Seems like learning a dialect of a language and then having nobody understand your fancy slang when you go back to your home state.

Still considering grabbing a thick C++ book and seeing what the advanced concepts look like. Can anyone recommend a good one?

Also, is Unreal a somewhat decent way to utilize newfound C++ skills, or is it the equivalent to UnityScript? Sorry if I’m going off topic here. I’m just wondering what I can use as a grinding stone that is still relevant to game dev.

I still stick to my claim :wink: I learned the basics of functional programming while working on a MUD in the LPC language eight years ago. I make use of that knowledge every time I make an editor tool in Unity using C# today. Also, I’m not even the programmer on my current project. I’m the background artists and animator! But being able to hammer out scripts for photoshop, import tools in Unity, and backup systems in bash has saved me incalculable amounts of time that I would otherwise have spent dragging and clicking and typing. All that extra time now goes to producing, testing, and incrementing the art.

To answer your question about C++ books. It’s been years since I read one but I suspect Stroustrup’s The C++ Language is still the standard material. Just… be prepared to spend a lot of time learning the ins and outs of constructors.

Since this is an old thread and i came here from google, normally i’d ignore it but the cringe drove me to bump, thus i post for everyone else stopping by.

C# and .NET is not the same thing!
Unity has been compiling C# 4 and running .NET 3.5 for a very long time.

There’s talk about upgrading the language and framework to C# 7 and .NET 4.6
C#7 but we have yet to see it.

That’s… outdated. The current version of Unity allows .NET 4.6.

thanks, i actually needed this link.