• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Czy to obiekt?

Object Storage Arubacloud
0 głosów
305 wizyt
pytanie zadane 18 października 2021 w C# przez JakSky Stary wyjadacz (14,770 p.)

Ostatnio rozwiązywałem quiz na temat znajomości C# i poszło gładko z wyjątkiem takiego pytania:

Kod: String CarName; powoduje utworzenie...

A) struktury

B) obiektu

C) żadne z powyższym

I w sumie to nie wiedziałem co zaznaczyć. W C# typ string zapisuje się małą literą, a tu jest wielka(ok to może tylko literówka). Dla mnie to wygląda jak zmienna bez inicializacji obiektu.

Dlaczego, więc prawidłowa odpowiedź to B?

1
komentarz 18 października 2021 przez adrian17 Ekspert (344,860 p.)

W C# typ string zapisuje się małą literą, a tu jest wielka(ok to może tylko literówka). 

Zwyczajowo używa się `string` bo to jeden z wbudowanych typów, ale technicznie klasa nazywa się String (jak wszystkie klasy, wielką literą) - pod tą nazwą również widnieje w dokumentacji: 

https://docs.microsoft.com/en-us/dotnet/api/system.string?view=net-5.0

Więc `string` to po prostu alias na `System.String`. Autor pytania pewnie użył wielką literę dla zmyłki :)

komentarz 18 października 2021 przez JakSky Stary wyjadacz (14,770 p.)
A tak, faktycznie masz rację :) Podobnie jak System.Int32 dla int...
komentarz 18 października 2021 przez adrian17 Ekspert (344,860 p.)

Podobnie jak System.Int32 dla int...

Tak, tylko int/Int32 to struktury (bezpośrednio odnoszą się do wartości, nie mogą być nullem), a string/String to klasa (typy referencyjne), więc mogą być nullem.

2 odpowiedzi

+2 głosów
odpowiedź 18 października 2021 przez Velta Maniak (52,010 p.)
wybrane 19 października 2021 przez JakSky
 
Najlepsza

W C# typ string zapisuje się małą literą, a tu jest wielka(ok to może tylko literówka).

Niekoniecznie. Możesz zapisać go także z wielkiej litery (wtedy musisz zawrzeć przestrzeń nazw System).

string jest jedynie aliasem dla klasy String (mimo wszystko, Visual Studio domyślnie proponuje, żeby klasę zamienić na słowo kluczowe – alias). Ta przecież ma swoje pola (sławne Empty dla pustych ciągów), właściwości (jeszcze popularniejsze Length), czy pomocne metody (jak IsNullOrWhiteSpace).

Zatem String jest niezłym kandydatem na klasę, przy czym:

Kod: String CarName; powoduje utworzenie...

...żadnego z powyższych. Jest tu wyłącznie deklaracja bez definicji – nie ma tu niczego.

Zresztą, można się spróbować:

String someStr;
someStr.GetType().Dump();

Oraz prosto z debuggera aplikacji konsolowej, co domyślnie jest przypisywane:

komentarz 18 października 2021 przez Wiciorny Ekspert (269,590 p.)
deklaracja powoduje utworzenie referencj ...  adresu, jeśli to jest typ obiektowy. Co ciekawe, referencja ta wskazuje na null, niemniej jednak warto dodać że typów prostych to nie obowiązuje
komentarz 19 października 2021 przez JakSky Stary wyjadacz (14,770 p.)
Czyli ten quiz jakiś trefny. Też obstawiałem odpowiedź C i to dość świadomie, ale odpowiedzi to B.  Dzięki za wyjaśnienie.
+1 głos
odpowiedź 18 października 2021 przez Wiciorny Ekspert (269,590 p.)
edycja 18 października 2021 przez Wiciorny
żadne z powyższym

nie tworzysz tutaj obiektu, tworzysz tylko zmienną referencyjną typu String, ale nie jest tworzony żaden obiekt, ani struktura.
Jest to tylko referencja do określonego typu.

Warto tutaj zajrzeć i sprawdzić co kryją w sobie typy proste i obiektowe :
http://robpaveza.net/speedy-c-part-3-understanding-memory-references-pinned-objects-and-pointers

Podobne pytania

0 głosów
1 odpowiedź 93 wizyt
+1 głos
1 odpowiedź 5,460 wizyt
pytanie zadane 19 kwietnia 2016 w C# przez timrh Mądrala (6,030 p.)
0 głosów
3 odpowiedzi 495 wizyt
pytanie zadane 16 grudnia 2015 w C# przez vverum Gaduła (4,340 p.)

92,539 zapytań

141,382 odpowiedzi

319,476 komentarzy

61,928 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...