Hvad fanden mener du? Det er to forskellige sprog og der er forskellen. Ligesom FORTRAN og C er forskellige. Jeg erkender mig tungnem og bliver nødt til at vide, hvad det er du mener. Jeg kan kun sige (og som den lille abekat jeg må være, og pænt citere) Java, C++ og C# er alle C-style languages. Mange af deres keywords er ens. De har meget af de samme control-statements, som if/else, switch, loops etc. De understøtter alle objektorienteret programmering, og de tre nyeste understøtter alle en eller anden form for arvning. C++ understøtter type-parametrisering (templates), det gør de andre ikke. Java og C# understøtter kun single-inheritance, denne begrænsning findes ikke i C++. C++ i sin standard-form er unmanaged, hvorfor man ovenikøbet kan bygge en masse smuk logik ovenpå scope-styring, det kan man ikke på samme måde i de to andre C-efterfølgere, da de intrisisk er managed - ikke SPROGENE - men det RUNTIME, der automatisk fordres. Java og C# har en noget simplere notation, ::, . og -> i C++, til namespace-resolution og element-reference erstattes alle i Java og C# med \".\" og dette alene. I C# og Java er alle objekttyper automatisk reference typer, hvorfor de automatisk ligger på en managed heap (igen noget med at sprogene som sådan ikke kan adskilles fra deres runtime), og man skal f.eks. i C# gennem større øvelser (boxing/unboxing) for at få value-types. I C++ er alt value-types... sådan da... selv en pointer bliver sendt over by value, og en reference (&) er jo blot en constant pointer (hvorfor den skal initialiseres). I C# (og sikkert også Java - har kun lavet ca. \"Hello, world!\" i denne byte-code interpreter/verifier) skal access (public/protected/private) erklæres for alle metoder og data-medlemmer. I C# har man properties, en slags syntaktisk sukker, der får et metodekald til at ligne et variabel access - findes ikke i C++, men som nævnt i første indlæg, så har MS lavet det i en __declspec-ting i VC, og det kan nemt implementeres, hvis nogen er interesseret (man kan også se det, hvis man bruger standard #import af COM-servere og søger ned til wrapningen af properties). C# har klasse-konstruktorer, altså en statisk-konstruktor; findes heller ikke i C++. Delegates (en af årsagerne til striden mellem SUN og MS i sin tid). Attributter, en web-metode erklæres ved at sætte en attribut på din service (klasse). Da C# programmer, biblioteker, klasser deployes i form af assemblies (en exe/dll der har mere end info i sig end traditionelle typelibraries i COM, faktisk ren XML, og gennem dette format foretages reflection, med hvilket man runtime kan undersøge strukturen af klasserne! Findes også i Java). Udover at erklære protection public/private/protected, kan man erklære det internal, og dette har igen noget med runtime at gøre... internal members kan kun accesseres af andre i samme assembly. Ligesom jeg også mener at Java har, så har C# et sealed keyword, der forhindrer yderligere nedarvning. Finalize markerer en sektion, der altid eksekveres selvom exceptions raises... alle disse ting findes IKKE i C++. Jeg gider ikke høre om sammenblandingen af C# og .NET (CLR) - de er uadskillelige... Der er også flere forskelle, såsom hvorledes man kan override, f.eks. virtuelle metoder, men jeg kan ikke huske det. Hvis dette ikke nævner hvad du har brug for, så må du henvende dig til en mere kompetent fætter indenfor emnet. Eller evt. hos
www.develop.com, de har mange gode kurser, hvor du kan få din lyst stillet. Sorry, hvis jeg ikke kan ridse alt hvad du gerne vil vide op. Læs evt. Eric Gunnersons bog. Det var en af de første, og den er en ren opridsning af disse ting, og der findes vist nok i den en sektion om dette og vist også en, hvor du kan se forskellen på C# og Java.