Robin Hood#33
A string mint típus tulajdonképp egy változó, az osztály pedig változók és az azokat kezelő függvények összessége egybezárva. Ebből kifolyólag egy változó kevesebb helyet foglal, egyszerűbb kezelni, cserébe mindenki láthatja az adott érvényességi helyen belül. Persze lehet úgy is felfogni hogy minek ide optimalizáció, vegyünk a gépbe mégtöbb ramot, vinyót, de azért egy magas(abb) szintű nyelvben se kell feleslegesen pazarolni az erőforrást, még akkor se ha alapból nem olyan hatékony mint az asm.
A legfontosabb azonban a string elérése. Char[] esetén csak pointerrel címezheted (indirekt), változó és class esetén érték szerint is adhatsz át. A pointeres címzés amellett hogy hozzáértő kezekben nagyon hasznos lehet, kevésbé hozzáértőknél a leggyakoribb hibaforrás. Arról nem is beszélve hogy string típus hiányában egyik függvény AnsiStringet ad vissza, a másik másmilyen strin osztályt vár bemenetként, aztán konvertálhatsz oda-vissza, ami szintén hibaforrás, és a futást lassító tényező.
Nem véletlen hogy a Java után a C#-ba is bejött a string típus (pascalban már volt alapból).