There's a funny thing about its cross-platform nature: You almost never see C# apps on other platforms. Why is that? There must be thousands of useful C#/.Net applications made that other platforms could benefit from, but the ONLY ones I've seen are the ones that targeted Mono to begin with. Nothing else.
Something fishy is going on here.
I've been kind of avoiding mobile development after getting my fingers slightly singed by spending too much time with jQuery Mobile before giving up - the one thing that tempts me to try doing some mobile development is the Xamarin tool set.
Many people use C# to develop applications for Windows and don't, won't or can't support other environments....
And while there are thousand of useful C# programs I doubt many don't have direct python / Linux competitors readily available that do near enough the same thing.
But why wouldn't someone who IS interested in running the application on Linux simply do the last bits to get it to other platforms? I have NEVER seen that happen.
"And while there are thousand of useful C# programs I doubt many don't have direct python / Linux competitors readily available that do near enough the same thing."
Sure, but I refuse to believe all the competitors are always doing a better job. There should be at least some application that found their way over to for example Linux.
a) I can't imagine somebody bothering to support .net software on the Linux desktop without being paid for it. I know those guys[1] are a minority, but it takes only a minority to create an absolutely toxic atmosphere. Maintaining a end user product can lead to frustrating interactions, and it doesn't really help if your choice of technology means that there exists a significant number of people who literally want you, your spouse, your three year old daughter and the family dog to die in a fucking fire.
b) Mono was always a bad choice for asp.net, which means that the software people are actually paid for doesn't run well on Linux. That was mostly a problem outside of xamarins control, and I hope it becomes better not that the devdiv MS seems to be somewhat committed to work together to make it truly interoperable.
[1] Just look at the comments at http://techrights.org/2013/02/09/tombye/.
I'm not sure that that's actually the case. C# has never caught on in a big way for consumer desktop development; the bulk of that still seems to be C++ and Win32/Win32 wrapper. It's used for _enterprise_ desktop development, of course, but people are less excited about porting that.
That's the thing. If you're adamant on a dynamic language you won't even be looking at C# or Java. It has nothing to do with the quality of the language, but the choice of programming paradigm.
Both C# and Java are quality languages. Given the choice between the two, I choose C# anyday. Sadly, this means Visual Studio... Resharper makes this slightly more tolerable.
To be honest, I think I'm just using it for the wrong thing - I don't tend to work on big, collaborative projects which is where Java really shines. Meanwhile, C# has a few conveniences (such as LINQ and rectangular arrays, off the top of my head) which seem to me to make scripting and small projects easier.
What aspects of C# makes working on large collaborative projects difficult? Not sure where you are going with this.
Unless you meant Team Foundation Server / Visual Source Safe pukes.
None. I was just talking about my issues with using Java for small projects, not using C# for large projects. My argument is that C# covers scripting and small utility programs adequately, while Java seems to require more boilerplate.
C# would be my natural choice for projects large or small.
"quality of the language" is not the same as the "dynamic" vs the "statically typed", "strongly typed" or "compiled" nature of the language.
Strongly typed languages have definite advantages because of the type guarantees that they provide in any successfully successfully compiling program. They have disadvantages too as you mention.
Nevertheless, many people feel strongly that where a strongly typed, statically typed, compiled language is available (i.e. not in a browser) it is an advantage to use it. And compared to java, c# generally is more terse and expressive.
"Quality" is subjective depending on what you value. If you only hang with dynamic language people then yes, c# and java are not of interest to you. Don't mistake that for a quality issue, or a universally held opinion; it is a design goal and design philosophy issue.