Limitations/disadvantages of C#

  • Thread starter Thread starter Wilbur
  • Start date Start date
W

Wilbur

My company is considering using C# for a large project and it is a
language I'm only just now becoming familiar with. For the most part
I like it and that seems to be the most logical choice as far as
future support. My question is: what are the disadvantages or
limitations of using C#? So far I've seen very few people willing to
mention anything "bad" about it, but every language has it's faults.
We would be using C# in the .NET Framework and building with Visual
Studio .NET (I assume there are other compilers though I haven't
looked). My biggest concern is something I read once, that the C#
compiler in VS will not produce object files for later linking so any
changes require the entire project to be recompiled. Is this true?
Are there any other things that may be a consideration for a
large-scale project (several hundred thousand lines of code at a
minimum)?
 
Wilbur said:
My company is considering using C# for a large project and it is a
language I'm only just now becoming familiar with. For the most part
I like it and that seems to be the most logical choice as far as
future support. My question is: what are the disadvantages or
limitations of using C#? So far I've seen very few people willing to
mention anything "bad" about it, but every language has it's faults.
We would be using C# in the .NET Framework and building with Visual
Studio .NET (I assume there are other compilers though I haven't
looked). My biggest concern is something I read once, that the C#
compiler in VS will not produce object files for later linking so any
changes require the entire project to be recompiled. Is this true?
Are there any other things that may be a consideration for a
large-scale project (several hundred thousand lines of code at a
minimum)?

C# can be compiled very fast, but you should certainly consider
splitting a project like that into several assemblies, which will help
matters.
 
I have done a project in C# almost 20,000 lines of code without trouble, you can see others projects like ROTOR o MONO, which have a lot more. You have a C# from Borland, and I guest that this answer all question except 1 the object files, and I don't have an answer for that.


--
Bela Istok
MVP C#
Caracas, Venezuela
My company is considering using C# for a large project and it is a
language I'm only just now becoming familiar with. For the most part
I like it and that seems to be the most logical choice as far as
future support. My question is: what are the disadvantages or
limitations of using C#? So far I've seen very few people willing to
mention anything "bad" about it, but every language has it's faults.
We would be using C# in the .NET Framework and building with Visual
Studio .NET (I assume there are other compilers though I haven't
looked). My biggest concern is something I read once, that the C#
compiler in VS will not produce object files for later linking so any
changes require the entire project to be recompiled. Is this true?
Are there any other things that may be a consideration for a
large-scale project (several hundred thousand lines of code at a
minimum)?
 
C# doesn't support multiple-inheritance. It supports a 'form' of MI by
allowing multiple *interfaces*, but this only benefits the user of the class,
not the implementor.

Don't bother responding to this message that "MI is bad" -- it isn't, it is a
powerful language feature that can be misused, but that doen't make it bad.

Not specific to C#, but the 'new' (now in its second revision) development
environment and compilers are extremely poor. There are a lot of issues, most
subjective, but some of the compiler warning/error messages are extremely
unhelpful and provide virtually no context. Migration from existing
(non-trivial) C++ projects to C# can be particularly tedious -- 1/2 the time
spent on the port, 1/2 the time spent trying to isolate the mystery errors.

It will take at least two more versions of the product before it is truly
usable and refined.
My company is considering using C# for a large project and it is a
language I'm only just now becoming familiar with. For the most part
I like it and that seems to be the most logical choice as far as
future support. My question is: what are the disadvantages or
limitations of using C#? So far I've seen very few people willing to
mention anything "bad" about it, but every language has it's faults.
We would be using C# in the .NET Framework and building with Visual
Studio .NET (I assume there are other compilers though I haven't
looked). My biggest concern is something I read once, that the C#
compiler in VS will not produce object files for later linking so any
changes require the entire project to be recompiled. Is this true?
Are there any other things that may be a consideration for a
large-scale project (several hundred thousand lines of code at a
minimum)?
 
I know they are reworking the whole build environment for Whidbey and LH.
Not that that helps you now. Not sure about the object module deal.
Obviously, if you use dll assemblies, those that don't change - don't need
to be rebuilt. So team1 working on dll1, dll2 can rebuild their own stuff
and team 2 using dll1, and dll2 just ref the binaries, so they don't need to
rebuild anything but their own stuff. As far as c# goes, after using it for
awhile, I can't imagine programming in anything else now. I can think in
c#, I can't say that for the other languages I used over the years.
--wjs

Wilbur said:
My company is considering using C# for a large project and it is a
language I'm only just now becoming familiar with. For the most part
I like it and that seems to be the most logical choice as far as
future support. My question is: what are the disadvantages or
limitations of using C#? So far I've seen very few people willing to
mention anything "bad" about it, but every language has it's faults.
We would be using C# in the .NET Framework and building with Visual
Studio .NET (I assume there are other compilers though I haven't
looked). My biggest concern is something I read once, that the C#
compiler in VS will not produce object files for later linking so any
changes require the entire project to be recompiled. Is this true?
Are there any other things that may be a consideration for a
large-scale project (several hundred thousand lines of code at a
minimum)?
 
Bret Pehrson said:
Not specific to C#, but the 'new' (now in its second revision) development
environment and compilers are extremely poor. There are a lot of issues, most
subjective, but some of the compiler warning/error messages are extremely
unhelpful and provide virtually no context. Migration from existing
(non-trivial) C++ projects to C# can be particularly tedious -- 1/2 the time
spent on the port, 1/2 the time spent trying to isolate the mystery errors.

While I know there are problems with VS.NET's designer (and the IDE
lacks important things like refactoring), I find the compiler
errors/warnings almost always reasonable - certainly compared with
those from MS's C++ compiler in VS6!
 
I won't list the advantages since I guess it is easy enough to figure those
out. Suffice it to say that despite the disadvantages my productivity has
increased with .NET and C# as compared to unmanaged programming.

I used to work with C++ for many years after which I switched over to C#
almost exclusively. All in all, I've got only a few issues with C#.
- no templates and thus no easy type-safe collections. In the beginning
having to downcast felt like returning to the stone age; now it doesn't
bother me that much (that is about to change though with generics in C#)
- no deterministic destructors and thus no RAII (and thus managing
_unmanaged_ resources can become more complicated) (well this is not really
a language but rather a CLR issue)
- no typedefs (typedefs were most useful with complex template types, so
with no templates it was not that much of an issue)
- the fact that the whole class is defined in a single file felt like a
limitation at first but it does not bother me any more
- not having multiple inheritance may be a limitation but that really
depends more on your style - I tend to avoid it even with C++

There are issues with working with VS.NET and C# in team environments in
complex projects, as is evident e.g., in this thread:
http://tinyurl.com/2e2mw. My experiences were very similar and it
occasionally does require an untrivial amount of working around to make
things happen.

Regards,
Sami


Wilbur said:
My company is considering using C# for a large project and it is a
language I'm only just now becoming familiar with. For the most part
I like it and that seems to be the most logical choice as far as
future support. My question is: what are the disadvantages or
limitations of using C#? So far I've seen very few people willing to
mention anything "bad" about it, but every language has it's faults.
We would be using C# in the .NET Framework and building with Visual
Studio .NET (I assume there are other compilers though I haven't
looked). My biggest concern is something I read once, that the C#
compiler in VS will not produce object files for later linking so any
changes require the entire project to be recompiled. Is this true?
Are there any other things that may be a consideration for a
large-scale project (several hundred thousand lines of code at a
minimum)?
 
The same here! VC# error and warning messages are absolutely great compared with previous VC++ versions.

However, C# language also has some limitations, and many of them are to be addressed in C# 2.0 (coming with Visual Studio .NET and ADO .NET code-named "Whidbey"). To read more about the new features, search for "Whidbey" on MSDN.

--
Sorin Dolha [MCP, MCAD]
Jon Skeet said:
Not specific to C#, but the 'new' (now in its second revision) development
environment and compilers are extremely poor. There are a lot of issues, most
subjective, but some of the compiler warning/error messages are extremely
unhelpful and provide virtually no context. Migration from existing
(non-trivial) C++ projects to C# can be particularly tedious -- 1/2 the time
spent on the port, 1/2 the time spent trying to isolate the mystery errors.

While I know there are problems with VS.NET's designer (and the IDE
lacks important things like refactoring), I find the compiler
errors/warnings almost always reasonable - certainly compared with
those from MS's C++ compiler in VS6!
 
Winforms do not refactor at all. The resx files once set theyre impossible
to refactor without d.icking it all up
 
Back
Top