W .NET Framework, przynajmniej w języku C #, mamy dwie „wersje” typu ciągu:
- "strunowy"
- "Strunowy"
Wydaje się, że są one wymienne, ale czy naprawdę? Jeśli nie można ich zamieniać, czy ogólnie lepiej jest używać jednego zamiast drugiego i pod jakimi warunkami?
string
nie istnieje w.net
, istnieje tylko w języku C #.Odpowiedzi:
Cóż, zgodnie z MSDN
Gdzie w rzeczywistości jest „String”
System.String
.Powiedziałbym, że są one wymienne i nie ma różnicy, kiedy i gdzie powinieneś użyć jednego lub drugiego.
Lepiej byłoby jednak zachować spójność z tym, którego użyłeś.
źródło
String
(a zatemstring
według aliasu) są typami referencyjnymi.Jak wskazano, są one tym samym i
string
są tylko pseudonimemString
.Do tego, co warto, używam
string
do deklarowania typów - zmiennych, właściwości, zwracanych wartości i parametrów. Jest to zgodne z wykorzystaniem innych rodzajów systemów -int
,bool
,var
etc (choćInt32
iBoolean
są również poprawne).Używam,
String
gdy używam metod statycznych w klasie String, takich jakString.Split()
lubString.IsNullOrEmpty()
. Wydaje mi się, że ma to większy sens, ponieważ metody należą do klasy i jest to zgodne ze sposobem, w jaki używam innych metod statycznych.źródło
Sugerowałbym użycie małych liter
string
. Wielkie literyString
użyją pierwszej klasy o nazwie String, którą znajdzie w zaimportowanych przestrzeniach nazw ... czyli ogólnieSystem.String
. Zamiast tego można użyć własnej klasy String.źródło
String
do pracy, nigdy nie można oszukaćstring
.string
.string
jest słowem kluczowym C #, które jest po prostu aliasem dlaSystem.String
... ale ponieważ jest to słowo kluczowe, edytor kolorowania składni / IDE wyświetli go w kolorze słowa kluczowego, tak samo jak int, double, jeśli, inaczej, itp. Stylistycznie możesz preferować użycie słowa kluczowego zamiast
System.String
typu (lub zarazString
po nim zrobiłaśusing System;
).Jest to punkt nisza chociaż, chociaż
bool
,char
,int
,double
istring
są wszystkie aliasy kluczowych dla typów systemów,string
jest nieparzysta jeden out, ponieważ jest to rodzaj odniesienia, a pozostałe są typy wartości.źródło
object
jest także aliasem słowa kluczowego dla typu referencyjnegostring
jest tylko pseudonimemString
, ponieważ ostatecznie są takie same.Można używać jak wolisz, chociaż zazwyczaj używają
string
, kiedy mam zamiar używać go tak jak prymitywny typ danych (podobnie jakint
,float
lubbool
) iString
kiedy mam zamiar używać go jako obiektu / klasy. Na przykład:W powyższym przypadku planuję po
foo
prostu przechowywać tekst (efektywnie jako prymityw), więc używamstring
; jednak kiedy dzwonięString.isNullOrWhitespace(string)
, używamString
. Robię to, ponieważ generalnie pierwsza litera nazw klas jest pisana wielkimi literami (String
), podczas gdy pierwsza litera prymitywów (takich jakint
) nie jest.źródło
Łańcuch jest używany w przestrzeni nazw System.String, łańcuch jest używany w specyfikacji kompilatora C #, ponadto System.String jest wartością typu referencyjnego. Preferujemy zajmowanie się obiektami System, ciąg znaków wyłącznie w celach literalnych. System i system działają tak samo.
Łańcuch służy również do porównywania, równości i innych celów.
źródło