Odbihame tady opravdu od tematu. Ja mam sve argumenty podporeny benchmarky zverejnenymi na webu a vlastnimi merenimi. Ty tady stale davas nejake teoreticke argumenty (s kterymi BTW nesohlasim) proc by mel byt .net pomalejsi. Budto to podpor necim konkretnim nebo to nema zadnou vypovidaci hodnotu.
Rozdil mezi hodnotovymi typy (int, char...) a referencnimi (Object a jeho potomci) patri k naprostym zakladum .NET. Pokud je nechapes tak je diskuze zbytecna. int je aliasem System.Int32. To nemeni nic na tom, ze promenne tohoto typu nejsou objekty a vznikaji tudiz na zasobniku a ne na halde. Hodnotove typy maji vzdy ekvivalentni objektovy obal, do ktereho se daji zabalit v pripade, kdy je nutne aby se hodnotovy typ choval jako referencni (napr. kolekce.add(1)). Rika se tomu boxing a deje se to jen v situacich, kdy je to nutne.
ad velikost char- Dnes je v zasade vzdy dvojbajtovy (v jave, .NET, ...). V C je jednobajtovy z historickych duvodu. V seriozne minenych programech musis ale pouzit stejne dvojbajtovy wchar. Duvod- do jednoho bajtu se unicode znak strasne blbe cpe.
//edit: abych nezakladal dalsi OT prispevek- pomoci UTF8 neargumentujte, samotny char musi byt dvojbajtovy pac nikdy nevis, co ti prijde. Vnitrni reprezentace retezcu v jave, .net a C++ wchar a ve vetsine dalsich jazyku je taktez dvojbajtova protoze je s tim mnohem snazsi a rychlejsi prace. Zjistete si fakta nez neco napisete.