Dlaczego wybraliście C#?

0

Czy pisaliście wcześniej w swojej karierze w Javie? I kiedy odkryliście, że c# to wasz język?

3

Zawsze podświadomie odrzucało mnie od javy ;)

0

Zaczynałem programowanie od C++ i miałem duże problemy z np skakaniem pomiędzy typami danych, w ogóle od pewnego momentu nie był zbyt noob-friendly

Googlując dostawałem wyniki dla C++ typu:

atoi( str.c_str() )

lub

std::istringstream ss(thestring);
ss >> thevalue;

lub

    using boost::lexical_cast;
    using boost::bad_lexical_cast;

    std::vector<short> args;

    while(*++argv)
    {
        try
        {
            args.push_back(lexical_cast<short>(*argv));
        }
        catch(bad_lexical_cast &)
        {
            args.push_back(0);
        }
    }

Będę szczery: Przerażało mnie to trochę i postanowiłem wybrać

Convert.ToInt32()

Int.Try/Parse()

Gdy odkryłem, ze w C# zamiast męczyć się z takimi rzeczami, to mogę robić coś, co działa i daje oczekiwane rezultaty (jakieś formsy, lub consolki śmigające w trayu i robiące tam coś), to od razu przyjemniej się uczyło/robiło coś

Dodatkowo Visual Studio(tak wiem, c++ też obsługuje) i MSDN+dotnetperls.com (do C++ używałem cplusplus.com i codeblocksa)

1
Pixello napisał(a):

Zawsze podświadomie odrzucało mnie od javy ;)

Dziwna sprawa, bo C# i Java są w końcu bardzo podobne. Gdybyś wybrał coś co nie przypomina Javy to by to miało sens. Np Python ma całkowicie inną składnię.

0
Wibowit napisał(a):
Pixello napisał(a):

Zawsze podświadomie odrzucało mnie od javy ;)

Dziwna sprawa, bo C# i Java są w końcu bardzo podobne. Gdybyś wybrał coś co nie przypomina Javy to by to miało sens.

Podobne, ale to właśnie te różnice powodują, że mnie również Java nie smakuje.

0

Ja mam dokładnie takie same spostrzeżenia jak @Azarien - niby C# i JAVA to rodzeństwo ale w javie nie potrafię się odnaleźć a c# przychodzi mi naturalnie. Nie wiem czym jest to spowodowane ale tak jest

0

Nie wybrałem C#, to C# wybrał mnie :D zostałem jego wojownikiem ;)

0

Tak. C# się nie wybiera. Do C# możesz zostać popchnięty, bo masz Windowsa i na nim stawiasz pierwsze kroki, a Visual Studio jest bardzo fajne. Bo chcesz pisać aplikacje pod klientów na Windowsie. Bo stawiałeś w nim pierwsze kroki i już wszystko inne jest fe.

Jak chcesz pisać wieloplatformowo, jesteś linuxowcem - nie wybierzesz C#. Jak już znasz dobrze jedno i drugie - nie wybierzesz C#. C# to zamknięcie, Java to otwartość.

C# ma tylko jedną zaletę: var. Ale skoro w Javie przez tyle lat nie wprowadzili vara, to znaczy, że da się bez niego żyć.

A jeżeli już mam pisać pod Windowsa, to C# bardzo lubię. Visual Studio jest spoko.

0

Ja mam dokładnie takie same spostrzeżenia jak @Azarien - niby C# i JAVA to rodzeństwo ale w javie nie potrafię się odnaleźć a c# przychodzi mi naturalnie. Nie wiem czym jest to spowodowane ale tak jest

Bo C# ma properties, operatory, unsigned, wskaźniki, goto… wszystko co Java złem nazywa ;-)

0
jarekczek napisał(a):

Tak. C# się nie wybiera. Do C# możesz zostać popchnięty, bo masz Windowsa i na nim stawiasz pierwsze kroki, a Visual Studio jest bardzo fajne. Bo chcesz pisać aplikacje pod klientów na Windowsie. Bo stawiałeś w nim pierwsze kroki i już wszystko inne jest fe.

Jak chcesz pisać wieloplatformowo, jesteś linuxowcem - nie wybierzesz C#. Jak już znasz dobrze jedno i drugie - nie wybierzesz C#. C# to zamknięcie, Java to otwartość.

C# ma tylko jedną zaletę: var. Ale skoro w Javie przez tyle lat nie wprowadzili vara, to znaczy, że da się bez niego żyć.

A jeżeli już mam pisać pod Windowsa, to C# bardzo lubię. Visual Studio jest spoko.

Być może za 1-2 lata gdy ustabilizują .NET Core ten argument będzie inwalidą.

1

Zaczynałem od Basica w latach 90tych ;) Potem był Pascal, Delphi (oczywiście w międzyczasie trochę weba i C++). W międzyczasie zrobiłem kurs Suna z Javy ale jakoś ten język nigdy mi nie podchodził.

Co ciekawe, moje pierwsze podejścia do C# sprawiły, że nie lubiłem tego języka. Uważałem go za "zabawkę dla głupich amerykanów" :D Z czasem, jak wszedłem w niego głębiej, okazało się że to całkiem przyzwoite. I dzisiaj jest jednym z moich dwóch głównych języków. Znaczenie też miało darmowe środowisko. Poza tym jest stosunkowo prosty i plusem dla mnie było to, że (współ)autorem był gościu od Delphi. Przez co często widać podobieństwa tych dwóch języków (co mi się podoba, bo wieeele lat robiłem w Delphi).

0

Generalnie tak jak koledzy wyżej, pisałem w obu językach (chociaż nie ukrywam że w Javie raczej małe projekty) i to właśnie szczególiki w stylu braku var, właściwości, i wielu innych rzeczy o których na szczęście już zapomniałem, doprowadzały mnie do szaleństwa. Oczywiście jakbym dłużej posiedział to pewnie bym się przestawił, ale mimo wszystko pierwsze wrażenia były wybitnie negatywne.

Za to o multiplatformowość bym się nie martwił, nie wspominając o Mono z którym jeszcze nigdy nie miałem problemu, to Microsoft pracuje w tej kwestii dość ostro i jestem dobrej myśli. Trzymam kciuki, bo bardzo polubiłem Linuksa, ale nie aż tak żeby uczyć się tej, fuj, Javy :P

0

Wybrałem C# swego czasu ponad jave 5 bo:

  • bo konwencja preferuje nawiasy blokowe w jednej kolumnie, niż otwierający w tej samej linii.
  • bo miał Linqu
  • bo miał wsparcie dla propertisów
  • bo miał przystępniejszą dokumentacje online (msdn) od javy
  • bo winformsy wyglądały jak kopia formatek z delphiego :D
  • bo miał delegaty
0

A jak z zarobkami/ofertami pracy porownujac te dwa jezyki? Na podobnym stopniu? Po studiach w wawie troche umiejac da rade znalezc robote dla juniora?

2

"C# to zamknięcie, Java to otwartość."

Zależy jak definiować te określenia.
Jeżeli wprost... to na jest odwrót ;) C# ma specyfikacje ISO oraz ECMA ... a Java nie ma.
Dodam asekurując się... Być może coś się zmieniło bo od 4-5 lat nie obserwuje Javy.

To popularne stwierdzenie, ale wynika z faktu że ludzie źle interpretują słowo otwarty.
Otwarty nie znaczy że na wiele platform firma wydała sdk/maszynę wirtualna tylko czy jest dostępna specyfikacja,
tak aby 3-ci podmiot mógł takie coś napisać.

0

Zacząłem naukę c# i javy. Uczyłem się mniej więcej równolegle i zrezygnowałem z Javy, język niby fajny, pracy niby więcej, ale jakoś ciezkawo mi się pisalo.

W c# jakos się "zakochalem" i teraz szukam pracy jako programista. ;)

0

A z zarobkami jak jest, .netowcy troche mniej chyba co?

4
fprogrammer napisał(a):

"C# to zamknięcie, Java to otwartość."

Zależy jak definiować te określenia.
Jeżeli wprost... to na jest odwrót ;) C# ma specyfikacje ISO oraz ECMA ... a Java nie ma.
Dodam asekurując się... Być może coś się zmieniło bo od 4-5 lat nie obserwuje Javy.

To popularne stwierdzenie, ale wynika z faktu że ludzie źle interpretują słowo otwarty.
Otwarty nie znaczy że na wiele platform firma wydała sdk/maszynę wirtualna tylko czy jest dostępna specyfikacja,
tak aby 3-ci podmiot mógł takie coś napisać.

Odleciałeś w kosmos.

Po pierwsze Java ma pełne specyfikacje języka oraz maszyny wirtualnej: https://docs.oracle.com/javase/specs/

Po drugie Java ma https://en.wikipedia.org/wiki/Technology_Compatibility_Kit który sprawdza czy dana implementacja Javy jest zgodna ze standardami.

Po trzecie to właśnie Microsoft ma problemy z dochowaniem standardów
https://en.wikipedia.org/wiki/Microsoft_Java_Virtual_Machine#Sun_vs._Microsoft

In October 1997, Sun Microsystems, the creator of Java, sued Microsoft for incompletely implementing the Java 1.1 standard.[4]

Microsoft, wykorzystując swoją dominującą pozycję na rynku próbował przepchnąć swoją niespełniającą standardów implementację Javy jako nowy "standard". Swego czasu pojawiało się trochę programów wymagających dokładnie Javy od Microsoftu i niedziałających na oficjalnej Javie. Jest to jeden z przykładów zastosowania strategii https://en.wikipedia.org/wiki/Embrace,_extend_and_extinguish

Jakie są praktyczne zalety posiadania specyfikacji ISO (względem posiadania oficjalnej dokumentacji w ogóle) czy otwartego kodu .NETa? Ja nie widzę żadnych, no chyba że zalety z punktu widzenia Microsoftu. Lista dostępnych JVMek niezależnych od Oracle'a jest długa, natomiast ZTCW obecnie wszystkie implementacje CLRa są w rękach Microsoftu.

Po czwarte otwartość Javy polega też na tym, że nie tylko Oracle ma znaczący wpływ na rozwój platformy. Dla przykładu system modułów w nadchodzącej Javie 9 został przerobiony ponieważ komitet złożony z delegatów z różnych firm i środowisk stwierdził, że mu się nie podoba i Oracle musiało go poprawić. Do poczytania np tutaj: https://www.infoq.com/news/2017/07/jsr-376-approved Tego typu komitety i głosowania są praktykowane od 1998 roku: https://en.wikipedia.org/wiki/Java_Community_Process

Po piąte platforma Java zostanie wyposażona w wydajne wykonywanie JavaScriptu, Pythona, R, Ruby, bajtkodu LLVMa oraz w łatwe tworzenie nowych języków na JVMa: http://www.oracle.com/technetwork/oracle-labs/program-languages/overview/index.html https://github.com/graalvm
GraalVM jest tworzony po to, by móc niskim kosztem tworzyć wydajne implementacje dowolnych języków - wystarczy zaimplementować tłumaczenie z kodu źródłowego (bądź pośredniego) do ustandaryzowanego AST, a GraalVM zajmie się JITowaniem tego do wydajnego kodu maszynowego. Ponadto dostępne są z automatu wszelkie bajery z platformy Java, a więc np wydajne Garbage Collectory czy rozbudowane zestawy narzędzi do profilowania, debugowania, etc

2
Wibowit napisał(a):

Odleciałeś w kosmos.
.....

Bardzo Pan rozszerzył moja wiadomość.
Nadmienię jeszcze raz, że nie interesuje się Java od 5-8 lat wiec mogę się mylić.

Nie wnikałem co daje, a co nie daje dokument standaryzacyjny ISO i ECMA...
tylko ze C# go zdobył a Java nie ma. Koniec. Tyle.

Jeżeli się pomyliłem proszę mnie sprostować.

Pozdrawiam

0

Wybrałem c#/.net kilka lat temu ze względu na łatwość wystartowania w tym środowisku. Instalujemy Visual Studio, tworzymy projekt z szablonu i możemy działać. Bez zbędnego instalowania bibliotek, skomplikowanych IDE itp. Super sprawa dla żółtodzioba który dopiero zaczyna z programowaniem. Nabrałem doświadczenia i teraz za wszelką cenę próbuję uciec ze "stodoły" Microsoftu. Zamknięcie na jedną platformę (tak tak, aspnetcore jest wieloplatformowe, powodzenia jeśli ktoś w to wierzy), jeden słuszny IDE będący ogromną krową wywalającą 15x dziennie i programowanie obiektowe/ statyczne typowanie jako rozwiązanie każdego problemu programistycznego. Do tego ten nieszczęsny typescript który jest ładowany w każdy nowy projekt. Aktualnie nieco zmieniłem zdanie na temat tej platformy - świetnej dla 100 juniorów budujących system do którego kodu lepiej nie zaglądać. Niestety znalezienie pracy w językach typu Elixir graniczy teraz z cudem, dlatego pewnie przejdę na javascript. Tak, po latach z .net uważam że javascript jest lepszym rozwiązaniem:D

0

Nieposkromiony Polityk - dobry hipokryta :D

7

Ja właściwie nie wybierałem, zacząłem pisać na studiach i tak zostało. Na początku podobała mi się łatwość tworzenia aplikacji okienkowych na Windowsa i myślałem, że będę się tym zajmował zawodowo. No i w sumie na początku tak było, ale szybko dopadła mnie rzeczywistość.

Zmiana z C# na Javę to byłyby dla mnie co najmniej trzy kroki wstecz. Ludzie, którzy twierdzą, że te języki są podobne stanęli w rozwoju jakieś 16 lat temu. Jedyne co je łączy to te głupie klamerki jako first-class citizen.
Java była (no i jest nadal uboga): brak generyków w czasie wykonywania, lambd, metod rozszerzających, inferencji typów, właściwości i wielu innych małych detali (jak nawet głupie przeciążanie operatorów, dzięki któremu string można porównywać w sposób intuicyjny), jakieś zamotany system typów z rozróżnieniem na klasy i prymitywy, wymuszana obsługa wyjątków. Owszem, to nie są może cechy krytyczne, ale są ładne i przydatne. A jeśli ktoś się upiera, że wygląd kodu nie ma znaczenia, to niech pisze w brainfucku.
No i przeciw Javie przemawiały jeszcze dwie rzeczy: Eclipse i NetBeans.

Teraz Java niby trochę nadgoniła, część braków składniowych zastępują zewnętrzne narzędzia, ale i tak jest zacofana. Co też ma swoje zalety - jest łatwiejsza dla początkujących, C# niedługo będzie chyba bardziej skomplikowany niż C++, a już teraz ma wiele śmierdzących ficzerów (np. query syntax czy jednolinijkowe metody jako wyrażenia). No, ale z drugiej strony uniwersalność języka jest większa - nie ma chyba zbyt wielu języków, które wspierają pattern matching i wskaźniki jednocześnie?

Zmiana z .NET na Javę to mógłby być krok naprzód. Wiadomo, platforma Javy jest starsza i od początku była otwarta, więc po pierwsze ma większą społeczność, po drugie ma więcej bibliotek, po trzecie są to też bardziej dojrzałe rozwiązania. No i potencjalnie przydatna jest możliwość wyboru wielu implementacji samej maszyny wirtualnej.
Pod tym względem .NET ma sporo do nadrobienia, ale idzie raczej ku dobremu. Wszystko, co najważniejsze jest już otwarte, społeczność ma wpływ na kształt produktów, a nawet Google i RedHat są członkami .NET Foundation. Od dawna zresztą nie jest tak, że tylko Microsoft dostarcza narzędzia i biblioteki, do wszystkiego są otwarte/darmowe alternatywy.

Wielu mówi, że w Javie więcej się zarabia... tylko przy okazji zapominają wspomnieć, że w takich przypadkach nie chodzi o język, ale o wiedzę i umiejętności, których większość przeciętnych programistów nie ma (np. HFT, implementacja systemów baz danych). Przeciętni programiści dostaną podobną kasę, a smutna prawda jest taka, że teraz więcej się zarabia w JavaScript niż w Javie czy C#.

A - no i Microsoft jest jednak zdecydowanie bardziej twórczy, skoro potrafi nazwać platformę inaczej niż język. W Sunie tego nie umieli. :P

Fanbojów Javy cierpiących na dysonans poznawczy uprasza się o przemyślenie ewentualnych odpowiedzi.

0

@somekind czy ja wiem czy w js sa wieksze? W Polsce 60-70% ogłoszeń to jakieś stronki. A dobry front/js musi mieć sporą wiedzę, albo jak już wchodzi w node'a to w sumie już jest backendowcem i często ma styczność z innymi językami.

2
somekind napisał(a):

A - no i Microsoft jest jednak zdecydowanie bardziej twórczy, skoro potrafi nazwać platformę inaczej niż język. W Sunie tego nie umieli. :P

Bo .NET jest platformą powstałą z myślą o wielu językach, a nie o jednym.
W Visual Studio 2002 od razu był C#, VB.NET i Managed C++ (nie mylić z C++/CLI).

0
Nieposkromiony Polityk napisał(a):

Wybrałem c#/.net kilka lat temu ze względu na łatwość wystartowania w tym środowisku. Instalujemy Visual Studio, tworzymy projekt z szablonu i możemy działać. Bez zbędnego instalowania bibliotek, skomplikowanych IDE itp. Super sprawa dla żółtodzioba który dopiero zaczyna z programowaniem. Nabrałem doświadczenia i teraz za wszelką cenę próbuję uciec ze "stodoły" Microsoftu. Zamknięcie na jedną platformę (tak tak, aspnetcore jest wieloplatformowe, powodzenia jeśli ktoś w to wierzy), jeden słuszny IDE będący ogromną krową wywalającą 15x dziennie i programowanie obiektowe/ statyczne typowanie jako rozwiązanie każdego problemu programistycznego. Do tego ten nieszczęsny typescript który jest ładowany w każdy nowy projekt. Aktualnie nieco zmieniłem zdanie na temat tej platformy - świetnej dla 100 juniorów budujących system do którego kodu lepiej nie zaglądać. Niestety znalezienie pracy w językach typu Elixir graniczy teraz z cudem, dlatego pewnie przejdę na javascript. Tak, po latach z .net uważam że javascript jest lepszym rozwiązaniem:D

Pisać można w VS Code.

Możesz uargumentować, dlaczego JS > TS? Bo mnie właśnie TS przekonał do tego, żeby trochę nadgonić C# i ogólnie rozwiązania od MS.

0
Nieposkromiony Polityk napisał(a):

Wybrałem c#/.net kilka lat temu ze względu na łatwość wystartowania w tym środowisku. Instalujemy Visual Studio, tworzymy projekt z szablonu i możemy działać. Bez zbędnego instalowania bibliotek, skomplikowanych IDE itp. Super sprawa dla żółtodzioba który dopiero zaczyna z programowaniem. Nabrałem doświadczenia i teraz za wszelką cenę próbuję uciec ze "stodoły" Microsoftu. Zamknięcie na jedną platformę (tak tak, aspnetcore jest wieloplatformowe, powodzenia jeśli ktoś w to wierzy), jeden słuszny IDE będący ogromną krową wywalającą 15x dziennie i programowanie obiektowe/ statyczne typowanie jako rozwiązanie każdego problemu programistycznego. Do tego ten nieszczęsny typescript który jest ładowany w każdy nowy projekt. Aktualnie nieco zmieniłem zdanie na temat tej platformy - świetnej dla 100 juniorów budujących system do którego kodu lepiej nie zaglądać. Niestety znalezienie pracy w językach typu Elixir graniczy teraz z cudem, dlatego pewnie przejdę na javascript. Tak, po latach z .net uważam że javascript jest lepszym rozwiązaniem:D

A Mono, GTK#, Xamarin to co? :P

0
fprogrammer napisał(a):
Wibowit napisał(a):

Odleciałeś w kosmos.
.....

Bardzo Pan rozszerzył moja wiadomość.
Nadmienię jeszcze raz, że nie interesuje się Java od 5-8 lat wiec mogę się mylić.

Nie wnikałem co daje, a co nie daje dokument standaryzacyjny ISO i ECMA...
tylko ze C# go zdobył a Java nie ma. Koniec. Tyle.

Jeżeli się pomyliłem proszę mnie sprostować.

Pozdrawiam

Tak. ZTCW to C# ma ISO i ECMA, a Java nie.

Microsoft "ustandaryzował" nawet swój format OOXML, tyle że sam ma problem z dostosowaniem się do niego:
https://en.wikipedia.org/wiki/Office_Open_XML

Starting with Microsoft Office 2007, the Office Open XML file formats have become the default file format[4] of Microsoft Office.[5][6] However, due to the changes introduced in the Office Open XML standard, Office 2007 is not wholly in compliance with ISO/IEC 29500:2008.[39] Office 2010 includes support for the ISO/IEC 29500:2008-compliant version of Office Open XML, but it can only save documents conforming to the transitional, not the strict, schemas of the specification.[40][41] Note that the intent of the ISO/IEC is to allow the removal of the transitional variant from the ISO/IEC 29500 standard.[41]

Sam standard zawiera zaskakujące znaczniki:

These settings (including element with names such as autoSpaceLikeWord95, footnoteLayoutLikeWW8, lineWrapLikeWord6, mwSmallCaps, shapeLayoutLikeWW8, suppressTopSpacingWP, truncateFontHeightsLikeWP6, uiCompat97To2003, useWord2002TableStyleRules, useWord97LineBreakRules, wpJustification and wpSpaceWidth) were the focus of some controversy during the standardisation of DIS 29500.[26] As a result, new text was added to ISO/IEC 29500 to document them.[27]

Wygląda po prostu na to, że MS powyjmował słownictwo z kodu Worda i skleił z tego standard.

Wracając do otwartości .NETa to na stronie https://en.wikipedia.org/wiki/Common_Language_Infrastructure jest napisane:

As of July 2009,[3] Microsoft added C# and CLI to the list of specifications that the Microsoft Community Promise applies to,[4] so anyone can safely implement specified editions of the standards without fearing a patent lawsuit from Microsoft. (...)
In 2012, ECMA and ISO published the new edition of the CLI standard,[1][2] which is not covered by the Community Promise.[4]

Hmmm.....

Microsoft gdyby mógł to by ze swojego Internet Explorera uczynił standard.

Odniosę się jeszcze do wypowiedzi somekinda:

jakieś zamotany system typów z rozróżnieniem na klasy i prymitywy

W .NETu też jest rozróżnienie na klasy i prymitywy. int jest prymitywem, nie dziedziczy po object. Do konwersji inta na object i z powrotem wymagane więc są boxing i unboxing dokładnie jak w Javie. Opis np tutaj: https://msdn.microsoft.com/pl-pl/library/yz2be5wk(v=vs.90).aspx

O ile w Javie autoboxing działa płynnie w obie strony:

Integer a = 6;
int b = 7;
a = b;
b = a;

o tyle C# wymaga wprost rzutowania:

object a = 6;
int b = 7;
a = b;
b = (int) a;

To co odróżnia Javę i C# w kwestii obsługi prymitywów to to, że w C# można sparametryzować klasy prymitywami. W Javie będzie można to zrobić jeśli zostanie zaimplementowany Project Valhalla

2

To co odróżnia C# od Javy w kwestii prymitywów, to to, że w C# nie ma takiej koncepcji. W sensie pewna grupa typów jest czasem tak określana, ale to nie jest jakiś oddzielny rodzaj typów, który się czymś specyficznym cechuje.
W C# jest int, który jest aliasem na System.Int32 i jest to jeden typ. Nie ma żadnej duplikacji jak w Javie i podziału na int i Integer.

0

https://ideone.com/dCt0T2

using System;
 
public class Test
{
	public static void Main()
	{
		object a = 5;
		object b = 5;
		System.Console.WriteLine(a == b);
		System.Console.WriteLine(a.Equals(b));
		System.Console.WriteLine(a.GetType().Name);
	}
}

Wyjście:

False
True
Int32

Jak widać da się zapakować inta (prymityw) w obiekt. Ten obiekt ma swoją tożsamość oraz nienadpisany operator porównania (oryginalny operator porównania z bazowej klasy object porównuje właśnie tożsamość) - z tych dwóch faktów wynika False na wyjściu. Metoda Equals jest jednak nadpisana - wychodzi na to, że duży int w C# działa dokładnie tak samo jak duży int w Javie.

A tu jest przypadek gdzie koleś się naciął na zapakowane prymitywy w C#: https://stackoverflow.com/questions/6205029/comparing-boxed-value-types
Zamiast operatora == musiał więc użyć metody Equals i wtedy zadziałało.

Panie somekindzie: nie znasz podstaw C# :]

5
Wibowit napisał(a):

Odniosę się jeszcze do wypowiedzi somekinda:

jakieś zamotany system typów z rozróżnieniem na klasy i prymitywy

W .NETu też jest rozróżnienie na klasy i prymitywy. int jest prymitywem, nie dziedziczy po object. Do konwersji inta na object i z powrotem wymagane więc są boxing i unboxing dokładnie jak w Javie. Opis np tutaj: https://msdn.microsoft.com/pl-pl/library/yz2be5wk(v=vs.90).aspx

W .net jest rozróżnienie na typy wartościowe i typy referencyjne, oba typy dziedziczą po object. Int jest typem wartościowym. Boxing i unboxing jest jedynie szczegółem implantacyjnym który dzielą zarówna typy referencyjne jak i prymitywy. Obsługa typów prostych została lepiej zaimplementowana w C# i już od lat możemy się cieszyć generykami w C# bez boxingu, a wy jak sam zauważyłeś ciągle na to czekacie.

Wibowit napisał(a):

Jak widać da się zapakować inta (prymityw) w obiekt. Ten obiekt ma swoją tożsamość oraz nienadpisany operator porównania (oryginalny operator porównania z bazowej klasy object porównuje właśnie tożsamość) - z tych dwóch faktów wynika False na wyjściu. Metoda Equals jest jednak nadpisana - (..)

Operatorów się nie nadpisuje, operatory się przeciążą w c#, wybór operatora jest na podstawie typu zmiennej, a nie typu obiektu na który ta zmienna wskazuje.

Wibowit napisał(a):

wychodzi na to, że duży int w C# działa dokładnie tak samo jak duży int w Javie.

tak jak somekind juz wcześniej wyjaśnił int jest tylko aliasem na Int32, zamień w tym swoim kodzie objecty na Int32, i się okaże że duży int działa zupełnie inaczej niż ten Javowy ;)

Edytka:
Jako gratis, int w C# jest obiektem więc możemy zrobić sobie chociażby takie coś, java tak nie potrafi bo ma prymitywy
5.ToString();

1 użytkowników online, w tym zalogowanych: 0, gości: 1