Stack OverflowDoes .NET equal C#?
[+93] [21] mike
[2010-06-23 15:11:34]
[ c# .net ]

Does being a .NET developer mean knowing C# or mean knowing something else?

What books should I read if I want to be a .NET developer?

(64) +1 for being 11 and going on this site to ask questions. - JSBձոգչ
+1 for asking such an insightful question. - P.Brian.Mackey
(6) The kid's gonna hit his reputation cap on his first day. Well done! - Tim Trout
(2) Man I thought curiosity and ingenuity was crushed from our youth by public education. Welcome and make sure you never stop learning. - ChaosPandion
@ChaosPandion perhaps he goes to a private educational institution or is smart enough to know he needs to get beyond what they offer. - Mark Schultheiss
(2) .... all that is good... assuming the OP is actually 11 :-P - user279521
+1 for coming here what i did after being double your age.. - Misnomer
(12) This should be a Community Wiki...or closed for being subjective...can't come to SO and not get the full "mobbed by MODs" experience. Don't let his "age" fool you...he could be a poser trying to endear himself to all us as "the young kid trying to program...." - Achilles
(15) ".NET" == "C#"; // returns false - Mark Rushakoff
(3) suggest he's not supposed to be here... - Alexandre C.
(28) Why do you want to be a .NET developer at age 11? I advise that you learn general skills now. Learn how the hardware works. Learn something low-level, maybe assembly or C. Learn a general object-oriented language (C# is perfectly acceptable), but don't aspire to be a professional .NET developer yet! Oh, and please take the time go outside and play. Enjoy the company of your friends and the comfort of your parents... they won't last forever! You'll have the rest of your life to write .NET applications (provided the framework maintains popularity) - baultista
It's like Scala and Java - Nicolas Viennot
(11) @baultista "Learn something low-level, maybe assembly or C" ... is that a joke ? Assembly and C are probably the worst starting language. - HoLyVieR
(1) @HoLyVieR C is what I was learning at his age. When I got to computer camp, (and eventually college) I was way ahead of my peers on basics like memory management and pointers. I did muck around in QBASIC before then, though. ;) - Stuart Branham
(2) @baultista: The OP wants to learn something about programming. Let him use a nice easy environment. He'll pick up useful knowledge and skills no matter what he programs, and there's a long time before he has to decide what he wants to be when he grows up. - David Thornley
@Stuart B I said "starting language", I wouldn't recommend learning C and especially ASM to someone who just started programming. If you learn other language you can start to look at it, but as a first language those 2 languages have some quite complex thing you need to learn (pointer, registry, etc.) in order to make minimal program. - HoLyVieR
@HoLyVieR C is really simple. You don't even have to learn what a class is to understand how "Hello World!" works. I'm not suggesting he learns something he doesn't want to, but to assume an 11 year old (or any beginner) won't be able to grasp C is disingenuous. - Stuart Branham
(5) How does a question like this got 60 upvotes? - dkson
(9) @baulista Assembly? At 11? Child abuse! - quillbreaker
@dkson Nostalgia - Jake
+1 for only getting half an answer in 18 months. - richj
[+37] [2010-06-23 15:17:02] Matteo Mosca

.NET is the core framework behind a set of languages, such as C#, VB.NET and F#.

C# is the most used of those languages, and arguably the "best" one in terms of syntax, but knowledge of C# doesn't mean knowledge of the .NET framework, nor the other way around.

Search online for some primer about the .NET Framework, then take a language of choice and start learning. In my opinion, C# is the one that will repay you best in the long time, while VB.NET may seem more user friendly at first.

F# is more oriented for math operations. It is a functional language while C# and VB.NET are object oriented. The difference is deeper than that, but I think you don't need to dig that deep while you're taking your first steps.

Edit: I blogged in more detail about this.

F# does have the advantage of F# interactive and script files, which have a much lower barrier of entry than "public class Program { public static Main(...) { ... } }". - dahlbyk
[+36] [2010-06-23 15:12:41] John Saunders

C#, VB.NET, F# and many others are all programming languages which can use the .NET Framework, and which require the .NET runtime engine in order to execute.


Note this is three separate areas of the documentation.

Also, see Beginner Developer Learning Center [4].


(2) I personally think this is an overload of information. Something simple as Matteo's answer will more likely help him more. I am sure he doesn't even know what the .net CLR is. - masfenix
@masfenix: yeah, I hadn't noticed his age. - John Saunders
(1) @Masfenix: Don't underestimate the knowledge level of kids. I knew a ton (though TBH don't recall being interested in computers at the time) when I was 11. - RCIX
Would the downvoter kindly tell us why he downvoted? The downvote doesn't tell other readers what it was about my answer that you didn't like. - John Saunders
[+33] [2010-06-24 02:35:54] CodeToGlory


(2) +1 for clearest and most concise answer - iandisme
(1) -1 Does not seem to address the question, or provide any elaboration for someone clearly unfamiliar with the topic. Yes, but why? - maxwellb
(11) Come on, he got all these people to stand there for him - hmp
Those are some of the .net developers who know more than just C# :) - CodeToGlory
(1) Most of them are VB.Net devs I reckon except that one dude right at the back,..he's an F-Sharper. - Stimul8d
@Stimul8d ..funny - CodeToGlory
+1 -- Style makes up for lack of substance =) - anon
[+12] [2010-06-23 15:22:19] cad

C# or not C#

.NET has several languages. Mainly C#, VB.NET, F#. C++ CLI

But in real life Microsoft bet for C#. All the main features are developed for c# and after included in VisualBasic.NET. So my advice is learn C#. Also if in the future Microsoft falls, a C# developer easily could move to Java or C++.

(Here you have the full list [1])

Books recommended

There are dozens of books for beginners. I have learned with this one:

C# Primer Plus of Klaus Michelsen [2]


(2) C# makes the move to C++ easier than VB, but still not quite easy. It's the just the C++ to C# transition that is very easy indeed. - Adrian Grigore
Just stay away from C++/CLI, which isn't C++ and isn't a real language on its own. The others are all reasonable choices, although I'd suggest C#. - David Thornley
(1) I don't buy the "C# looks like C++/Java so it's easier to change languages than, say, VB.NET". There are so many fundamental differences betweenC#/C++/Java that many developers will have problems if they use that viewpoint. A VB.NET programmer might even be in a better position as they have fewer pre-conceptions about how "C like" languages work. - Ashley Henderson
[+4] [2010-06-23 15:30:15] Daniel Brückner

.NET Framework [1] is the name of the whole platform. There are several programming languages (C#, VB.NET, F#, and many more [2]) with their respective compilers. All these compilers produce Common Intermediate Language (CIL) [3](formerly known as Microsoft Intermediate Language (MSIL)) code - a hardware-independent code. The Common Language Runtime (CLR) [4] finally executes the CIL code by (JIT-)compiling it to native machine code.

The .NET Framework also includes a large set of assemblies with common functionalities called the Framework Class Library (FCL) [5]. The ECMA standardized subset of the FCL is called the Base Class Library (BCL) [6].

And to add some mor abbreviations with C - the specification of the CLR is called Common Language Infrastructure (CLI) [7] and contains among other parts the specification of the type system Common Type System (CTS) [8], some general rules called Common Language Specification (CLS), and the specification of the execution environment Virtual Execution System (VES) [9].


[+2] [2010-06-23 15:17:38] Alos

Programming C# 4.0, Sixth Edition by Ian Griffiths, Matthew Adams, Jesse Liberty is a great C# book, as well as Beginning ASP.NET 3.5: in C# and VB by Imar Spaanjaars. I agree with John as well.

+1 Beginning ASP.NET 3.5 by Imar is a FANTASTIC introduction. - Dal
[+2] [2010-06-23 15:32:14] P.Brian.Mackey

Programming languages are normally pretty basic and simple. C# only has 77 keywords and like writing english papers they have some language rules that you should follow. "Frameworks" make programming languages like C# a lot more powerful by providing ways to make common tasks easier. You should start learning to be a .NET developer by learning C#. It is the most widely used language in the framework.

I am a fan of Murach's series, more importantly the publisher is appropriate for beginners and the C# book [1] is well rated.


[+2] [2010-06-23 15:35:07] Misnomer

C# is an object oriented programming language...some of the others Java,C++ so as different from C a procedure oriented language.....while some thing like F# or LISP is functional language...all of these mainly differ with their approaches...Read more about it here [1].

What are the different types of programming languages? [2]

While .NET is a framework that basically allows various languages to compile and execute using the CLR....Being a .Net Developer it does not necessarily mean you know C# you may be working VB or F# so a .NET developer is someone who works with .NET platform....know more about differences between asp and or C# here [3]


[+2] [2010-06-23 17:30:12] msbyuva

.NET is a Framework developed by Microsoft in order to develop Web, Desktop, Mobile etc.. applications. So in order to develop the application in .NET, we use languages like C#, VB.NET, J#, Java, C++ etc which can be compiled to an Intermediate Language (MSIL) that can be understandable by .NET Framework.

So .NET and C# are not the same, we use C# as the language to develop applications in .NET Framework.

[+2] [2010-06-23 17:42:24] FrozenFire

.NET is a proprietary framework for a variety of microsoft languages, including C#, F#, J# and VB.NET. There are also a few other languages that run on it, such as IronPython, IronRuby and Boo.

C# is just one of those languages.

Nitpick: Boo isn't a Microsoft language. It's a language by one guy that happens to compile to run on the .Net Framework (or Mono). (and there's a partially complete JVM implementation). - JasonTrue
There, fixed. Happy now? - FrozenFire
[+2] [2010-06-23 17:57:08] Tom W

Point of note: C# was the (first? or possibly only) language designed specifically to use .NET. Visual Basic was modernised from VB6. Visual C++ is one of many implementations of C++ that happens to target .NET. I don't know of anyone who's ever used J#.

C# is Microsoft's flagship for .NET and you can't go far wrong in using it. Many new features appear earliest and most comprehensively in C# before other languages.

Some people will use the phrase "C# .NET" and others will shout them down. They are wrong and this nomenclature is entirely correct, yet almost always unnecessary. There's nothing to say that C# can't target other frameworks and indeed it does with Mono. It's just as valid to say "VB .NET"; I suppose it would also be correct to say "C++ .NET" though most people would probably say "VC++" for Visual C++.

Question for the OP: Do you understand the difference between a language and a framework?

(1) Visual C++ doesn't target .NET. There's a hacked-up version that does, but don't learn it unless you have a specific reason. Don't learn J#. If you're going to learn Java, learn Java. It's a pretty good introductory language itself. - David Thornley
Mono is a .NET clone so it's not much basis to say "C# targets other frameworks". OTOH Mono is working on "ahead-of-time" compilation which takes it rather far from the "normal" managed-code environment. - Qwertie
Visual C++ does target .NET, and I don't mean C++/CLI here. You can take any plain C++ code and produce pure MSIL from it with /clr:pure. The only two unsupported features are setjmp/longjmp (dunno why, should be implementable using exceptions) and passing a va_arg to a vararg method. - Pavel Minaev
[+2] [2010-06-23 21:06:21] maxwellb

Does being a .Net developer mean knowing C# or mean knowing something else?

As .NET is a framework [1], or generally a collection of class libraries [2] which run in a common [3] runtime [4], you could "know Visual Basic .NET" and "know" .NET. You could also "know C#", or "know F#", and similarly "know" .NET. More precisely, you are programming for .NET, or perhaps against the .NET runtime libraries [5].

A few analogies: Java is a language. It is also a runtime, or a virtual machine [6], with its own bytecode [7]. You could program in the Java language [8], or the Jython [9] dialect of the Python [10] language. In either case, your source code is compiled to be run inside a Java virtual machine [11].

Alternatively, you could "know" C++ [12], but I don't know if you know the C++ standard library [13], or if you know the Qt Framework [14].

An important distinction lies among the relationship between programming languages and targets, as well as implementations [15] of frameworks and runtime libraries. If you start to learn .NET on Visual Studio Express editions [16], in Microsoft Windows, you will probably be programming in Visual Basic .NET, or C# (3.0 or 4.0) languages, targeting the MSIL bytecode [17] to be run in the Microsoft implementation of the .NET runtime. It would be perfectly conceivable to have an implementation of a C# compiler which runs in the Haiku operating system and targets the Qt Framework and C++ standard libraries. It just might not be standards compliant at every level, or feature "complete".

What books should I read if I want to be a .NET developer?

Start with some books that cover .NET 3.5 and Visual Basic and C# each, so that you can develop for both, at least through examples, but feel free to code in whichever language you like best. 90% of everything you can do in VB/C#, its similarly easy to do in C#/VB. Try comprehensive books from major publishers such as apress [18], O'Reilly [19] (and C# [20]), or ForDummies [21].

Link: Visual Studio Express editions [22]


[+1] [2010-06-23 15:53:20] Mark Schultheiss

Applied Microsoft .NET Framework Programming (Pro-Developer) [Paperback] Jeffrey Richter

THIS is how I got started!

here it is on Amazon: [1]

Be sure to see what they say is also bought with this book!


I also like Jeffrey Richter's works. They are comfortable to read - KroaX
[+1] [2010-06-23 16:37:05] Bobb

Listen to me. I am 12 years old and I know better. All those lyrics about .NET and C# are utter BS.

Get yourself a good C# book and it will give you enough knowledge about most used .NET classes so for you there is no difference between C# and .NET for 3 years to come (at least!).

(6) Honestly, you can think of .NET as all the libraries and classes, and C# as the means to use those classes. It's like .NET is the road, and C# is a Toyota Camry. There are other cars which use the same roads. - tster
[+1] [2010-06-23 23:14:16] Cervo

As you have seen from other response, the .NET runtime can host many programming languages. The two most commonly used ones are VB.NET and C#. The library of .NET is very similar between all the languages, with mostly the same objects/calls just done in different ways for each language.... So no matter which language (unless you use libraries specific to that language ie the Python standard library), you should be learning the .NET libraries.

C# seems to be the language the Microsoft is championing so I would expend effort on learning that one. It is also more similar to Java which is probably the most similar competitor to the .NET runtime.

When I see .NET developer, I think of job ads and generally they will be referring to C# or VB.NET. Iron Python, F#, etc. will just confuse the good HR people....

Microsoft is working to keep VB.NET and C# even in terms of functionality - they're not championing one over the other. - John Saunders
[0] [2010-06-23 21:33:14] mishoo

Learn Lisp first, then you can go on and learn anything else quite easily (just a bit frustrating when you'll see that those shiny new and buzzy languages don't have a lot of features that Lisp has had decades back).

I started with BASIC, then assembler (Z80), then Pascal and then assembler again (80x86), then C and C++, then JavaScript then Perl/Ruby/Python, and then Lisp. And I'm really very sorry that I wasn't lucky enough to have started with Lisp (or Scheme) in the first place.

How does an answer that refers to nearly everything BUT .net and C# qualify as an answer to the question? Particularly when half the "answer" just comes off as bragging about languages you know? - cHao
+1 for Z80 assembler. - Gustav Bertram
[0] [2010-06-24 01:27:08] Wingman2

.NET is a framework more or less like the Java virtual machine. In .NET you have a set of classes to use and when you compile your code it does not go directly to binary. First is pre-compiled to a common language so you can program in many languages (C#, J#, VB, etc. any how builds a pre-compiler can) and even a mix of them and then compile all of them to the common language where all of them can use all the classes of the .NET environment.

So you can develop your software in all the languages supported by Visual Studio. But you have to understand the .NET platform to take advantage of it.

In MSDN there are courses for Latin America like "programador 5 estrella" or 5 star programmer and they are very good for getting started.

[0] [2010-06-24 13:57:50] tamim

.NET is the technology which is generally programmed using C#, C++, Visual Basic, etc. The C# programming language is designed for use with .NET, but it itself is not .NET.

[0] [2011-02-05 15:24:49] Dan Abramov

Okay, there are lots of answers here but I'll try to make things as clear as possible.

C# is a programming language, i.e. notation for expressing your thoughts and ideas to computer with special words and grammar. There are many programming languages out there. Each programming language has its own rules, some of them may seem similar.

You can say that C evolved into C++, then Java took much from C++, and C# took a lot from Java. However you must be aware that C# is developed by Microsoft, whereas C++, for example, has many different implementations. Therefore C# is mostly for Windows, although there are some alternative options if you want to develop for iPhone [1], Mac [2] or Linux [3] systems.

Of course mere language is not enough. You need something that transforms your code into real programs runnable on the computer, which is called compiler. Often you don't want to reinvent the wheel. For example, you don't want to write code that downloads information from the Internet each time you need this feature because it was implemented thousands of times before. So you need some libraries that contain ready-to-use code.

For C#, this set of libraries, compilers and special tools, is called .NET Framework.
It is a package that you need to install on computer so it could run C# programs.

When looking for a job, .NET developer usually equals C# developer, because C# is considered the main language for .NET Framework. You need to choose some language to develop with .NET, and C# is a great choice. However you can also use VB .NET, F# and other languages with the same set of libraries and model of execution. This is why .NET development doesn't mean C# development but includes it. .NET is great in the way it allows developers to choose language.

You can use .NET to build dekstop applications, websites and apps for Windows-based mobile devices. There are also projects to bring .NET to iPhone and Android devices but they are not free (about $400).


[0] [2011-02-05 15:40:03] Eddie Velasquez

".NET".Equals("C#") == false

[0] [2011-11-19 00:36:23] richj

For completeness, since equality should be a commutative operator: C# does not equal .NET since C# code can be be compiled for a Silverlight runtime.