I've been learning some C# (I'm a C++ programmer) and I have yet to see any reason for me to use it instead of C++. Could anyone give some examples of where C# could be better/easier/more useful?
I've been learning some C# (I'm a C++ programmer) and I have yet to see any reason for me to use it instead of C++. Could anyone give some examples of where C# could be better/easier/more useful?
[email protected]
Microsoft Visual Studio .NET 2003 Enterprise Architect
Windows XP Pro
Code Tags
Programming FAQ
Tutorials
Native code? Lots of people don't/can't have the .NET framework installed.
Doesn't C++ compile to native code?
[email protected]
Microsoft Visual Studio .NET 2003 Enterprise Architect
Windows XP Pro
Code Tags
Programming FAQ
Tutorials
Sorry. I misread your post. I thought you were asking why one should use C++ instead of C#.
In that case, ignore my previous post.
Use C# only if you have to.
Back to square one. Why would I have to?Use C# only if you have to.
[email protected]
Microsoft Visual Studio .NET 2003 Enterprise Architect
Windows XP Pro
Code Tags
Programming FAQ
Tutorials
1. Your employer wants you to.
2. You want to use managed code. You can do it via C++ too, but I find C# much easier to work with the .NET framework.
3. Preparing for Longhorn.
If you don't need the speed or fine control of C++, then there is really no reason wasting time on all of C++ drawbacks when you can use a RAD language. C# is one of them and really nice.
hth
-nv
She was so Blonde, she spent 20 minutes looking at the orange juice can because it said "Concentrate."
When in doubt, read the FAQ.
Then ask a smart question.
Nvoigt pretty much summed it up. It's pretty well known the .NET framework can shorten development time by months. C# has/is also been standardised, and is avaliable on Linux. My understanding is C# code created for windows, so long as it doesn't contain any native stuff, should run on linux without being recompiled (http://www.go-mono.com for more information).
It's also just so much more simple to use because the .NET framework has almost everything you could ever need. Make a library? All you need to give people is the DLL - no headers or any of that rubbish. The DLL's contain meta-data, which handle all the functions of the .LIB and header files in one (plus a lot more stuff). Lets see you do database access with Access and SQL server at the same time - I've never even seen this done in C++, but my guess is its probably a lot faster in C#/.NET.
It can also be used for ASP.NET web pages, and is much more structured and easier to read (IMO) than Perl/PHP. Theres also Web Services, which allow you to store all your business logic on a server for you clients to access - sorta like calling a DLL remotely.
Finally - NO POINTERS, nearly everything you need pointers for can be done using the object class.
>Finally - NO POINTERS, nearly everything you need pointers for can be done using the object class.
1. C# does have pointers if you need them.
2. You must be one of those Java lovers, aren't you? Pointers in my opinion are essential in understanding how things work in the background. About 50% of the Java programmers I know don't have a clue how things work back there or what a pointer is. Tsk tsk. Look at the woes of Java.
3. The object class is not the reason why things can be done without pointers. The reason things can be done without pointers is because in actuality, EVERYTHING is a pointer in C#, they just dont look like it. It is the same way in Java. EVERYTHING is a pointer. So in actuallity everything is being done with pointers, you just dont see it. It has nothing to do with the object class. The object class serves a different purpose: inheritance, generality, and portability
But anyways, C# is a very nice language. In fact, I started writing tutorials on my webpage just this past week, and I opted to use C# instead of C++ (that is a big step for me since C++ is my primary language) because of its versatility. I decided I would rather use IComparable objects in my examples rather than writing out templated classes like I would be doing in C++. Either way is perfectly okay, but I decided to go the way of less typing.
But can anyone run a program made in C#? Don't they need the .NET framework?
[email protected]
Microsoft Visual Studio .NET 2003 Enterprise Architect
Windows XP Pro
Code Tags
Programming FAQ
Tutorials
Everyone will need the .NET Framework ( free download from MS and included with Longhorn ) or the Linux equivalent to run .NET applications the same way everyone need a VM for Java applications.
hth
-nv
She was so Blonde, she spent 20 minutes looking at the orange juice can because it said "Concentrate."
When in doubt, read the FAQ.
Then ask a smart question.
Is it possible to package the framework with a C# application?
[email protected]
Microsoft Visual Studio .NET 2003 Enterprise Architect
Windows XP Pro
Code Tags
Programming FAQ
Tutorials
Legally ? No problem, you can redistribute the Framework.
Programmatically ? Yes, but you have to do it yourself. Back in beta MS provided a merge module that could be included in the installer and would install the Framework automatically, but this didn't make it into release for unknown reasons. So if you write an installer package, check for the framework and install it if it's not on the target machine, it should work.
hth
-nv
She was so Blonde, she spent 20 minutes looking at the orange juice can because it said "Concentrate."
When in doubt, read the FAQ.
Then ask a smart question.
Actually, I love the way things can be done without pointers, too. Of course it would be best if everyone understood pointers, but than again it would also be better if everyone understood Einsteins theory of relativity just because Newtons analysis of gravity isn't 100% accurate (hint: this refers to your pointer vs. object argument).Originally Posted by DavidP
There are differences between a pointer and a reference to an object. For one, pointers can point to an invalid location in memory. References can't because you cannot change their target. You cannot call everything that stores a memory address a pointer. At the very least, you need to compare with autopointers because in C# objects are not guaranteed to stay in one place.Originally Posted by DavidP
I also remember reading something about a linker for .NET so that (AFAIK) your clients wont need the .NET runtime. All the runtime code you use is compiled into the executable, and what you dont use is ignored. IIRC though, it was only for VB.NET. I'll try and find it...
Edit: http://www.remotesoft.com/linker/
Seems to work for managed C++, C# and VB.NET.
Salamander .NET Linker and mini-deployment tool allows you to link .NET assemblies together into a single file, and to deploy your application without installation of the whole Microsoft .NET Framework
Last edited by nickname_changed; 06-02-2004 at 03:22 AM.