Niezmienne typy wartości i niezmienne typy referencyjne są semantycznie wszystko jednak identyczne; jedyne różnice polegają na tym, że typy referencyjne obsługują sprawdzanie równości referencyjnej, które mogą, ale nie muszą być znaczące, i że typy wartości mogą być zawijane w wartość zerową (z T), podczas gdy typy odniesienia są niejawnie zerowalne. Jeśli typ będzie niezmienny, zależnie od tego, w jaki sposób będzie on używany, mogą istnieć powody związane z wydajnością, aby faworyzować strukturę lub klasę; Struktury są szybsze w przypadku niektórych operacji (prawie wszystkie operacje, w przypadku rozmiarów mniejszych niż cztery bajty), podczas gdy klasy mogą być szybsze dla niektórych innych (szczególnie dla rzeczy większych niż 16 bajtów). Co więcej, niektóre typy operacji są zasadniczo niemożliwe przy użyciu struktur.
Zmienne typy struktur są użyteczne, w przeciwieństwie do twierdzeń niektórych użytkowników, ale są pewne zastrzeżenia. Jeśli mamy zmienną, która zawiera odniesienie do zmiennego obiektu klasy, a ktoś robi coś, aby zmienić ten obiekt, ta zmiana będzie skutecznie "widziana" przez wszystko, co zawiera odniesienie do tego obiektu. Jeśli ktoś chce zmienić obiekt bez naruszania czegokolwiek innego, musi wiedzieć, że jest jedyną referencją do tego obiektu. Często jedynym sposobem, aby się tego upewnić jest skopiowanie wszystkich danych z obiektu do nowej instancji obiektu, a następnie wprowadzenie zmiany do tej nowej instancji. Natomiast jeśli mamy zmienną strukturę, można po prostu wprowadzić dowolne zmiany, bez konieczności tworzenia nowej instancji.
Jedynym prawdziwym problemem z zmiennymi strukturami jest to, że .net używa różnych abstrakcji, aby zachowywać się jak część jednolitego systemu typów, a abstrakcje te mogą powodować, że kopie struktur będą używane w miejscach, w których logicznie powinny być używane oryginały . Nie zawsze jest oczywiste, kiedy te substytucje mogą wystąpić, i mogą prowadzić do mylącego i błędnego zachowania.
Jeśli nie możesz zdecydować, to prawie na pewno "klasa". Jest to niezwykle rzadkie, aby * legalnie * pisać strukturę. –
Dla tureckich programistów, mam wpis na blogu na ten temat http://sonergonul.net/2012/12/net-icerisinde-deger-tipi-ve-referans-tipi/ –