Yup I bought Visual C# .Net...I havn't tryed it long enough to realy make a decision on if I like it. It is very similar to C++...I also noticed some things that are similar to Java. Its lika a C++/Java hybrid.

I've been looking at Mono, which is an Open Source and cross-platform version of C#. It's coming along nicely. I've been staying away from C# because it was a MS-only language, but I'm changing my mind now.

i've never really touched it much for long.. then, those new free ms ide's got available as beta, the Visual Studio .NET 2005 Express Edition BETA (woah, long name:D), for c++, for c#, etc..

then i thought, cool, c++ with high quality compiler, and the new c++/CLI wich is a quite impressive designed language to work with native and managed code. so i touched managed the first time really with c++ and thought its cool.

then i tried the c# version of 2005..

i never step back:D intellisence fast and perfectly knowing everything, a language easy as pie (once you mastered c++ c# is .. wow! ), fast compilation, great exception help (so you really know what you did wich you shouldn't), fast working binaries (haven't benched. but they feel responsible, load quick, etc..).

i'm happy.. for me, c# is not the next thing. it's the only thing right now. the package is so clean, so solid, so complete.. .NET 2.0, c# 2.0, vs 2005.. great work..

i steared clear of it for the same reason and i regreted it from the moment i seriously tried it out. for me it also was mono and the fact that C# is becoming the standard for gnome that lured me into giving it a try. also there are so many features that make it more than just a java/c++ hybrid (the comparison is actually totally wrong)

I go into a little more depth in the C# vs Java thread. I will develop in it for a little while at least because I want to be familiar with all of the moderately popular languages. I will probably end up switching between several languages as I do now. I highly advocate using languages for the applications they are best at

I have come to really love C#. The .NET framework is so robust, so complete while at the same time providing some of the most outstanding documentation that I have ever seen (which is an interesting thing to say about Microsoft). It works well with much of the latest technologies including Speech Synthesis/Recognition, 3D Graphics API's, Security, Cryptography, GUI Development, Reflection, and even Class Meta-data or Attributes.

C# is far from being a restrictive language like Java, Reflection actually affords great power and – when used sparingly – can actually replace the need for more complex and potentially time consuming work-arounds. C# is very much a "self-documenting" language, but without being as verbose as either Java or VB (though I don't advise the literal application of this self-documenting approach). It cuts out the need for header files, and provides unparalleled compilation speeds. The Just-in-time compilation optimizes the assembly for the target machine and even operating system and the fact that it is a managed language opens the door to seamless cross-platform development and deployment and removes the need for the a host of if-defs and the maintenance of separate builds.

In the future, C# will even allow for seamless deployment of many games to the X-Box II and other consoles which will make use of XNA (well XNA is some-what ambiguous as to its actual purpose at the moment, but I take that as the jist of it). C# affords maintainability and rapid application development: two features that are imperative for any successful software solution… especial game development. Sadly the stigma of being "to slow for game development" is associated with both Java and C#, though Java has made great strides in this and C# has proven very efficient and fast with often very minimal differences in speeds from native code (other then the quick and dirty comparison tests which don't even run long enough for the JIT time to be compensated for or which perform simple computations).

I have seen Axiom, a C# port of OGRE actually run faster then its predecessor, and this speed will only grew by leaps and bounds with the advent of generics in .NET 2.0. It was tested with Axiom and resulted in a 5X FPS increase!! (not to mention all of the repetitive code which could be eliminated). The only class that I have seen to be slow in comparison to other languages implementation is the ArrayList, but this is likely due to the boxing/unboxing and will therefore be remedied in .NET 2.0. Many find C# a turn off and consider it nothing more then a proprietary, windows-only Java clone (J++ anyone?), but I find that for the most part it is implemented *very* well in both Mono and DotGNU Portable.NET.

The only thing that I could ask for is an excellent cross-platform, LayoutManager-driven, GUI library similar to that found in Java. This is largely remedied with Portable.NET's (and to a lesser extent Mono's) excellent cross-platform support for WinForms. It is also provided with C# binding for other mature cross-platform GUI solutions including wx.NET (for wxWidgets) and GTK# (for GTK+). I have found that the Visual Studio.NET to be the best IDE that I have ever encountered - and short of a couple stability issues – as productive as Eclipse. You can even write Server-side web applications with the same language and even integrate them into the same solution!!

I have worked with C# for a while and have found that it has allowed me to accomplish any given task very easily and because Microsoft was smart enough to take a page out of the book of every successful programming language (from C++ to VB Java to Perl), it has resulted in an excellent solution for every programming task that I have worked with thus far. Its excellent support for interoperability with native languages and the ability to be used with any one of the literally hundreds of .NET language makes it a very flexible solution. It is my opinion that C# and the .NET framework, will make and excellent game development solution as soon as some of the stigmas associated with it are debunked. It provides the maintainability, powerful, flexibility, and cross-platform deployment that are so critical to game developers at the moment and I think with time the speed hit will either be overcome, or rendered insignificant in comparison to productivity gained by its use. I wish to test my hypothesis and determine if C# is in fact a feasible solution for game development by continuing my work on the RealmForge GDK and I think that others should at the very least do themselves a favor and keep an open mind and give C# a try.

Migrating from C++ to C# is like a change of cars. I wouldn't recommend it without a reason because you'll be unable to continue your work until you get used to new coding style.

I have been programming C++ for several years. At frirst it was shocking that:

I can't control the creation and destruction of my objects.

I have no access to my traditional APIs. (I thought C# was a mere extension of C++ before.)

Anyway C# is a new refreshing trend. It has an overwhelming library of standard classes (NET Framework) and some features that make it easier than its predecessor. I know several projects that utilize it as a scripting language and that is also the right way to do.

I have no access to my traditional APIs. (I thought C# was a mere extension of C++ before.) [snapback]12172[/snapback]

Actually you can control creation and destruction using constructors, destructors, and optionally the IDisposable interface, other then that garbage collection deletes then when needed, but you can even force that by called GC.Collect. See the following article:

Also you can access all of the traditional API's through the use of p/invoke. You can check out Tao (a C# convenience binding for many popular media and game related libraries) as simple example of this, and you can do the same easily with any API. Also, the .NET framework provides a wealth of base classes that i have seen replace the need for many misc. native libraries very well. Its much more then just a scripting language if you invest some to learning many of its intricacies. But i definlty agree that you must evaluate wether the amount of time invested getting used to a new language is worth the new features. I think that it would be useful to at least demanding a working knowledge of a managed language or at the very least become familiar with it for the sake of WinForms (as i have many dev-teams just use it for the GUI end and tie it into the native C++ app logic module).

C# is a bit like C (only a little bit more powerfull), it's easyer than C++ but less powerfull, it's ok, better first learn C before you start with C++ or C#, C is much better organised and C++ is a total mess better first learn to program C after that the step to C++ and/ or C# is much, much smaller!

They are all three recommended but still; first learn C before you start with the others!

Regarding 1, check out the "using" statement. For 2, see p/invoke etc. [snapback]12175[/snapback]

Thanks a lot. You are good coding (driving) instructors. Anyway my final examination will be some project in C#. I just don't have one right now.

To GameWriter: I don't think learning C before is a good idea. Learning a new language involves writing a lot of programs in that language. And C programmer may develop a set of habits that will harm him when he will migrate to C++ or C#.

i believe that the choice of first language is relatively unimportant. mostlikely your first steps will be using only one function (main). after that you learn procedural programming and after that you start to grasp the benifits of OOP. in that respect i see an advantage of starting out with a language that supports pure procedural programming, c++ does that as much as c so it doesn't matter which one you pick. c's stricter rules might be of benefit to some and might only bother others

i believe that the choice of first language is relatively unimportant. mostlikely your first steps will be using only one function (main). after that you learn procedural programming and after that you start to grasp the benifits of OOP. in that respect i see an advantage of starting out with a language that supports pure procedural programming, c++ does that as much as c so it doesn't matter which one you pick. c's stricter rules might be of benefit to some and might only bother others [snapback]12177[/snapback]

Surely you mean "C++'s stricter rules"? Or what exactly are you referring to?

C# is a bit like C (only a little bit more powerfull), it's easyer than C++ but less powerfull, it's ok, better first learn C before you start with C++ or C#, C is much better organised and C++ is a total mess better first learn to program C after that the step to C++ and/ or C# is much, much smaller! They are all three recommended but still; first learn C before you start with the others!

I agree with Decibit, it will take quite a time to learn two languages and right now he is taking a class in C#, not another language. But moreover, working your way from procedural to Object-oriented is the worst possible strategy for learning C#. These are two fundamentally different paradigms and this would be largely counter-productive. Object-oriented programming is much easier to grasp if you being designing and writing it. Also, is far more intuitive the procedural programming (though some developers may disagree if they are only comfortable with the later). It is human tendency to abstract and make association between things, specifically systems to real-world objects or "classes". Furthermore, C# is a far easier language to deal with bar none. It is very self-descriptive as opposed to the often cryptic coding style in C++ and C and it is written from the ground up to cater to the strengths of all the most powerful languages instead of hacked onto and internally implement everything in hideous structures the way C++ does. it is true that the ability to program and think programmatic solutions to problems and break them down into units is a universal concept in programming that allows the developers to acquire new languages very quickly, but C# is a far more object-oriented language then C++ and C doesn't even support this methodology.

you won't use much OOP in the beginning since you are only learning the basic concepts. still you have to code that way (that might not be a problem for you) and i know many people who started out with java and never understood how programming lanuages work because of that (low level is good sometimes). after you learned the basics you will learn about methods (in OOP). most likely you will program in a procedural way and not in an OOP way at first. again that makes me think that there is an advantage in starting out with a procedural language (how long you stick to it is a different question). if you read more carefully what i wrote you will notice that i said that my opinion is that it doesn't actually matter what language you use, so i don't see why you singled that sentence out...

edit : another thing that you should consider is that while you think OO your computer does not and so you should have a good understanding of how the machine operates at the low level. anyways, i didn't intend to turn this into a "what language is better" discussion. i don't question that OOP is superior and i like C# very much. it's just a matter of which approach will give you the better learning experience and i believe that, as you can't ignore the low level aspect forever, you should start from the bottom and work your way up. others might think differently though