Any recommendations on learning C#

IndyColtsFan

Lifer
Sep 22, 2007
33,656
687
126
Hey all,

I wanted some opinions on the best way to go about learning C#. I think I'd probably do best in structured classes rather than trying to do it on my own. To give some background, my programming in the past has largely been with procedural languages or assembly code. I really need to learn OOP and as a SharePoint person, C# is the best way for me to go. Any recommendations on good classes to take or online training?

When I read through C# code, I can kind of/sort of understand what is going on but there is still a lot I don't quite understand and I need to eliminate those gaps.

Thanks
 

Apathetic

Platinum Member
Dec 23, 2002
2,587
6
81
Since you already have a programming background, you may want to see if a local community college offers a course (they tend to be extremely cheap). This way you have an instructor you can bounce questions off of.

Dave
 

cabri

Diamond Member
Nov 3, 2012
3,616
1
81
Since you already have a programming background, you may want to see if a local community college offers a course (they tend to be extremely cheap). This way you have an instructor you can bounce questions off of.

Dave

I took 2 C# courses at a local CC.

Even after acing the courses, I found out that I knew a lot less than I needed to in order to get a C# position based on C# itself.

Book based learning needs more hands on real world projects
 

K7SN

Senior member
Jun 21, 2015
353
0
0
If you know procedural languages have you programmed in K&R C? Classes, inheritance , delegates etc. take a little time master but C# is C++ reinvented by Microshaft to compete with Java and C++ is just OOP added to K&R C. Depending on what you are programming, the first thing you may have to really figure out (to write useful code) is how to work within (almost around) OOP structure. If you were in Nevada I'd give you some books. Having taught both objective C and then C++ a couple decades ago, it took me about a week to write my first windows program in C# using NET 1.1 but I'm a scientific or mathematical programmer and methods (what we called functions) but with their scope limited to a class (unless you do some tricks) or put your needed methods in a base class (available in every instance of the class). The other way is to make all your needed functions (called methods in OOP) static and just build a DLL included with your class with a C# command "using MyLib;" Not knowing your previous skills or what exactly you will be programming the best advice is go to a used book store or library and get a cheap book on C#, Net Programming & Object-oriented software development. The book I bought back in 2002 was an O'Reilly book by Jesse Liberty called Learning C#. Things have changed a slight bit as each version of Visual Studio as they add functionality classes that make the job easier but the basics for C# for Net 1.1 are the same as I suspect they are Visual Studio 2015. I say suspect because the cheap client (EPA) I have has me programming in VS 2010. To do it correctly is more about learning on design patterns and those tools you really do initially need to really enhance polymorphism and encapsulation while limiting scope through designing the best base classes. The other great place to learn is the internet; example go to Code Project and download other peoples free source programs and figure out how they work. A good reference book is very handy. I'm sure others will chime in with good reference sources. I learned it with significant other programming background in a about a week (everything I needed to write programs) but years to master all the proper tools and ways to limit scope (using Pascal or C terminology) while writing efficient tight code. Example- there are many ways to move necessary data from one class (Say a GUI application that collects user preferences) to another class (Say an Output Form to display results) but a large job a public enumerated (enum in C#) Value Table where values (Variables in Procedure Language terminology) can be accessed and modified. You may not want to do that type of programming. but if your an accomplished procedural languages or assembly person something like SharePoint where many of the tools are already done means you need just to interface those tools with your C# program. Good luck and I'm sure if you have specific questions (and when you start to delve into C# you will) this forum will be able to give you an answer or point you in the proper direction.
 
Last edited:

smackababy

Lifer
Oct 30, 2008
27,024
79
86
I can't help as far as courses (though, I do suggest searching the free MIT online courses), but the more I use C#, the more I like it. Now, I have a Java background and lots of OO, so it is easy to transition.
 

IndyColtsFan

Lifer
Sep 22, 2007
33,656
687
126
Thanks everyone. Maybe I'll look into a local CC to see about classes and then supplement those with some additional reading.
 

cabri

Diamond Member
Nov 3, 2012
3,616
1
81
Good luck - Looking through the IVY Tech web site, they seemed to have nothing available.

You may have better luck taking courses at the University level
 

purbeast0

No Lifer
Sep 13, 2001
52,931
5,802
126
to be honest, i wouldn't worry about the language at this point.

while i can't help point you the direction of a class, i'd say to take the best class geared towards OOP in general. you need to learn the basics and the foundations before really worrying about specific languages. it translates to all OOP languages.

that said, if there is one in c#, go for it. but don't let one being another language, that is supposed to be good, pass you by.
 

IndyColtsFan

Lifer
Sep 22, 2007
33,656
687
126
Good luck - Looking through the IVY Tech web site, they seemed to have nothing available.

You may have better luck taking courses at the University level

Yeah, I looked at Ivy Tech and was disappointed. Bummer. I'll have to keep looking.
 

IndyColtsFan

Lifer
Sep 22, 2007
33,656
687
126
to be honest, i wouldn't worry about the language at this point.

while i can't help point you the direction of a class, i'd say to take the best class geared towards OOP in general. you need to learn the basics and the foundations before really worrying about specific languages. it translates to all OOP languages.

that said, if there is one in c#, go for it. but don't let one being another language, that is supposed to be good, pass you by.

I took an OOP class in grad school almost 20 years ago. The problem was the class really sucked (it was VERY high-level and the professor REALLY sucked) and I didn't learn much. I think I understand the concepts behind OOP, it is just translating them to a language. I'm an old dog and it is hard to teach me new tricks.

Though, maybe I could take a Java class instead (I think they might be more plentiful) and that might be enough to help me transition to C# more easily. Thoughts?
 

purbeast0

No Lifer
Sep 13, 2001
52,931
5,802
126
I took an OOP class in grad school almost 20 years ago. The problem was the class really sucked (it was VERY high-level and the professor REALLY sucked) and I didn't learn much. I think I understand the concepts behind OOP, it is just translating them to a language. I'm an old dog and it is hard to teach me new tricks.

Though, maybe I could take a Java class instead (I think they might be more plentiful) and that might be enough to help me transition to C# more easily. Thoughts?

yeah if you know java, you can pick up c# pretty easily. that is just what i mean by don't let the language be a barrier if there is a good course in a non c# language that is out there.

granted, my c# experience is strictly from writing a game in the Unity3D engine on my own, but i had never used c# until i did that, and it was very easy to pick up with a strong java/groovy background.
 

owensdj

Golden Member
Jul 14, 2000
1,711
6
81
I'd suggest you use many different resources to learn C#. There might be things you don't understand from one resource that another explains in a way you can understand.

As far as a book on C#, C# 5.0 in a Nutshell from O'Reilly is a really good one. Look for C# 6.0 in a Nutshell when it's released in the Fall.

Microsoft has some good info on C# at https://msdn.microsoft.com

If you want to ask specific questions in a live chat, the people in the ##csharp channel on Freenode IRC are very experienced and helpful.
 

Spungo

Diamond Member
Jul 22, 2012
3,217
2
81
When I read through C# code, I can kind of/sort of understand what is going on but there is still a lot I don't quite understand and I need to eliminate those gaps.

Something to keep in mind is that 99% of learning "C# programming" is actually .NET programming. The language itself is not the problem. Understanding the tools/libraries is the problem. You could have a PhD level of education on the C# language and still have no ability to write an actual program that does stuff. A guy who writes in Visual Basic but understands .NET stuff will have a much easier time reading C# code than a guy who knows C# but doesn't know .NET.

Look at this jumbled mess of code used for writing a config file:
Code:
var configFile = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
var settings = configFile.AppSettings.Settings;  

if (settings[key] == null)                                         
{
    settings.Add(key, value);  
}
else                                                            
{
    settings[key].Value = value;                                    
}
configFile.Save(ConfigurationSaveMode.Modified);
ConfigurationManager.RefreshSection(configFile.AppSettings.SectionInformation.Name);
That's all .NET stuff that isn't language specific. ConfigurationManager class.

I bring this up because some books are about the C# language itself, and they don't really cover .NET libraries. I have one book that is about 700 pages of C# theory. It has a section about stack allocation, and it has a section about pointer conversions, but you won't find anything in that book about how to make a config file or how to do things.
 

Merad

Platinum Member
May 31, 2010
2,586
19
81
You really should just do some online tutorials/classes to get a handle on the basics of the language then work through a couple of small personal projects. C# isn't taught that often IME, and even if you find a class what you learn there isn't likely to go much beyond the basics of language syntax and some stuff about OOP.

Alternatively if you really want take a class, take a Java class. They should be offered anywhere and everywhere. That will teach about OOP, and add another language to your toolkit. After learning Java, transitioning to C# is fairly trivial.
 

Spungo

Diamond Member
Jul 22, 2012
3,217
2
81
Alternatively if you really want take a class, take a Java class. They should be offered anywhere and everywhere. That will teach about OOP, and add another language to your toolkit. After learning Java, transitioning to C# is fairly trivial.
It might be good to start with Python instead, depending on what the OP is trying to achieve. In the book Think Python (O'Reilly), the author says the book was written because his students were struggling with Java. He was trying to teach a class on the basics of computing, but he couldn't teach the students because the students were too busy struggling with the language being used. It takes a lot less time and effort to get things working in Python, so more time can be spent on learning concepts. Read about inheritance, write a python script in 5 minutes, see the results. Move on to the next concept. Read about constructors, write another 5 minute script and see the results. Move on to the next concept.
 

Merad

Platinum Member
May 31, 2010
2,586
19
81
It might be good to start with Python instead, depending on what the OP is trying to achieve. In the book Think Python (O'Reilly), the author says the book was written because his students were struggling with Java. He was trying to teach a class on the basics of computing, but he couldn't teach the students because the students were too busy struggling with the language being used. It takes a lot less time and effort to get things working in Python, so more time can be spent on learning concepts. Read about inheritance, write a python script in 5 minutes, see the results. Move on to the next concept. Read about constructors, write another 5 minute script and see the results. Move on to the next concept.

Well, OP is experienced with C (presumably) and assembly, so I doubt he will be tripped up by the same things as freshman intro to CS students. Also, OOP is kind of wonky in Python thanks to duck typing. His end goal is to learn C#, so Java knowledge will translate almost directly to C# while Python will not.
 

IndyColtsFan

Lifer
Sep 22, 2007
33,656
687
126
Thanks guys. Went ahead and signed up on pluralsight, as I also wanted to take some SharePoint courses too.
 
sale-70-410-exam    | Exam-200-125-pdf    | we-sale-70-410-exam    | hot-sale-70-410-exam    | Latest-exam-700-603-Dumps    | Dumps-98-363-exams-date    | Certs-200-125-date    | Dumps-300-075-exams-date    | hot-sale-book-C8010-726-book    | Hot-Sale-200-310-Exam    | Exam-Description-200-310-dumps?    | hot-sale-book-200-125-book    | Latest-Updated-300-209-Exam    | Dumps-210-260-exams-date    | Download-200-125-Exam-PDF    | Exam-Description-300-101-dumps    | Certs-300-101-date    | Hot-Sale-300-075-Exam    | Latest-exam-200-125-Dumps    | Exam-Description-200-125-dumps    | Latest-Updated-300-075-Exam    | hot-sale-book-210-260-book    | Dumps-200-901-exams-date    | Certs-200-901-date    | Latest-exam-1Z0-062-Dumps    | Hot-Sale-1Z0-062-Exam    | Certs-CSSLP-date    | 100%-Pass-70-383-Exams    | Latest-JN0-360-real-exam-questions    | 100%-Pass-4A0-100-Real-Exam-Questions    | Dumps-300-135-exams-date    | Passed-200-105-Tech-Exams    | Latest-Updated-200-310-Exam    | Download-300-070-Exam-PDF    | Hot-Sale-JN0-360-Exam    | 100%-Pass-JN0-360-Exams    | 100%-Pass-JN0-360-Real-Exam-Questions    | Dumps-JN0-360-exams-date    | Exam-Description-1Z0-876-dumps    | Latest-exam-1Z0-876-Dumps    | Dumps-HPE0-Y53-exams-date    | 2017-Latest-HPE0-Y53-Exam    | 100%-Pass-HPE0-Y53-Real-Exam-Questions    | Pass-4A0-100-Exam    | Latest-4A0-100-Questions    | Dumps-98-365-exams-date    | 2017-Latest-98-365-Exam    | 100%-Pass-VCS-254-Exams    | 2017-Latest-VCS-273-Exam    | Dumps-200-355-exams-date    | 2017-Latest-300-320-Exam    | Pass-300-101-Exam    | 100%-Pass-300-115-Exams    |
http://www.portvapes.co.uk/    | http://www.portvapes.co.uk/    |