Talk:Comparison of C Sharp and Java
![]() | Java Start‑class Low‑importance | |||||||||
|
![]() | To start a peer review, choose an appropriate topic from the list below and click on the link to create the review page.
|
![]() | Links from this article with broken #section links : You can remove this template after fixing the problems | FAQ | Report a problem |
![]() | Links from this article which need disambiguation (check | fix): [[CLR]], [[generics]]
For help fixing these links, see Wikipedia:WikiProject Disambiguation/Fixing a page. Added by WildBot | Tags to be removed | FAQ | Report a problem | ![]() |
This page has archives. Sections older than 90 days may be auto-archived by Lowercase sigmabot III if there are more than 4. |
Simplicity vs. feature richness
Wikipedia is great for beeing _SIMPLE_ not for beeing "feature rich". This article evaluates C# as better, because it has more features, than Java. The "missing" features of Java are marked red. Diplomatically speaking, this approach is not very clever. 193.165.212.242 (talk) 11:54, 14 November 2011 (UTC) (cs:User:Pteryx)
The tone of the article makes it seem heavily biased towards C# because it has features that Java doesn't - ignoring whether Java would actually benefit from these features or not, and the fact that the vast majority of them were deliberately left out because of design principles of the language. Then lo and behold when a feature comes along that's in Java and NOT in C# (checked exceptions for instance) the article launches straight into talking about all the disadvantages of checked exceptions! And when the opposite happens, such as with LINQ, the article discusses all the positives about it.
This article has the potential to be good, however at the moment it's nothing more than a load of biased waffle. I use both C# and Java extensively and have no bias towards one or the other, but this page definitely does. 86.26.141.146 (talk) 17:31, 1 January 2012 (UTC)
- Once again (see below): this article compares two languages by listing their features and mentioning alternatives on he other side. Becaue C# has more features than Java, C# comes out as ... well, having more features. There is no bias in that whatsoever. Commenters like you keep coming here on how the article is 'biased towards' C#. I don't see any such bias. Please point it out. There definitely needs to be an opinion piece to explain to people using software that more features doesn't always equate better, but this article is not the place for that, I think. Rp (talk) 18:05, 3 January 2012 (UTC)
- Article.biased() == false; C# is simply a newer language than Java and thus has more features because the C# programmers thought of stuff that the Java guys didn't. But that doesn't make it better. How it's used is important as well. Cheers, The Doctahedron, 00:42, 24 January 2012 (UTC)
- I use both Java and C#. I prefer C# solely for its support of events. Now I've seen events in old pascal code, so they aren't exactly a new concept - I know that this is just one example of a feature that Java is missing, but is it really that biased to point it out? After all, C# support on mobile phones is inexistent in most cases, and poor on Android - is there any free C# compiler for Android? This "missing feature" for C# is also pointed out in the article, along with arbitrary-length floats. Yes, Java has a lot of red boxes in that list, but that doesn't mean that the list is biased - just that Java has less features than C#. We could compare C# and Java to x86 assembly, and assembly would be almost a solid pane of red boxes - but this doesn't mean that it is worse or inferior, just that it is intended for a different purpose. 90.194.203.69 (talk) 12:39, 16 February 2012 (UTC)
- My understanding was that this is supposed to be a discussion about the semantics of the language, and that the underlying platforms were compared elsewhere. C# has language-level support for a lot of things Java doesn't, so a feature-comparison (an objective way to compare the two) will intrinsically favor C#. — Preceding unsigned comment added by 152.23.122.74 (talk) 20:59, 2 May 2012 (UTC)
Unified type system
C# (and .NET Framework) has no unified type system. I.e. pointers and interfaces does not derive from the System.Object. Moreover, C# does not allow pointers to be encapsulated as objects. [1]
- ^ Not everything derives from object, MSDN Blogs > Fabulous Adventures In Coding
194.54.20.58 (talk) 12:12, 1 March 2012 (UTC)
See http://msdn.microsoft.com/en-us/library/aa664638(v=VS.71).aspx Useerup (talk) 17:28, 1 March 2012 (UTC)
Did you bother to try run that code using pointers? Try to compile this:
class Test
{
unsafe static void Main()
{
int i = 42;
int* p = &i;
Console.WriteLine(p.ToString()); // Operator '.' cannot be applied to operand of type 'int*'
new Stack<int*>().Push(p); //The type 'int*' may not be used as a type argument
new Stack().Push(p); //Argument 1: cannot convert from 'int*' to 'object'
}
}
See http://msdn.microsoft.com/en-us/library/y31yhkeb(VS.90).aspx “Pointer types do not inherit from object and no conversions exist between pointer types and object. Also, boxing and unboxing do not support pointers.” 194.54.20.58 (talk) 06:18, 2 March 2012 (UTC)
- Find a reliable source which says "no, C# does not have a unified type system". So far there are only sources supporting that C# has a unified type system. You are correct that the the native-oriented type "pointer" does not derive from object. But the pointer type is not part of the common type system of C#. It is a type to which you only gain access when you run the extended version of the language which you get access to by compiling with the unsafe option. But it is really down to reliable sources. Remember, Wikipedia is about verifiability. --Useerup (talk) 07:07, 2 March 2012 (UTC)
- I found http://msdn.microsoft.com/en-us/library/2hf02550(VS.71).aspx which says that the common type system supports value types and reference types. Reference types can be self-describing types, pointer types, or interface types. So pointers ARE a part of CTS. And pointers are just pointing to an object, they are not objects itself, they are simply an address of an object.
- Anyway, if you are concerned using unsafe context, try to compile this:
Console.WriteLine((object)default(TypedReference));
- .NET Framework has exceptions from its rules, and these exceptions makes statement “Every type is deriving from/can be converted to object.” false. If Microsoft wrote “All types derive from the System.Object base type.” it should also write ”except pointers.” but it didn’t on that page (it did on other, the link is in my previous post). 194.54.20.58 (talk) 07:47, 2 March 2012 (UTC)
Unsigned integer types
I changed the entry for unsigned integer types. Java's char type is an unsigned 16 bit integer. I'm tired of reading that java doesn't have any unsigned integers *at all*. It's clearly not true, although the number of unsigned integer types is very limited. The "simple/primitive types" section should probably also be changed. — Preceding unsigned comment added by 86.52.7.203 (talk) 12:02, 2 May 2012 (UTC)
Contradiction
In section 1.1 Features, it says that Java has a Decimal128 data type:
Data types | Java | C# |
---|---|---|
IEEE 754 binary32 floating point number | Yes | Yes |
IEEE 754 binary64 floating point number | Yes | Yes |
High precision floating point number | 128-bit (28 digits) Decimal type | 128-bit (28 digits) Decimal type |
The simple answer, as stated in section 1.3.2 Primitive types is NO. Don't worry, I already fixed it. 68.173.113.106 (talk) 03:29, 2 March 2012 (UTC)
Please PR this page
Please Peer Review this page. Thanks! 68.173.113.106 (talk) 01:13, 10 March 2012 (UTC)