Kādi ir C# tipa pārvēršanas veidi?
sobes.tech AI
Atbilde no AI
C# ir šajā valodā ir divi galvenie tipu pārvēršanas veidi:
-
Izteikta pārvēršana (Explicit conversion): Prasa
(tips)operatora izmantošanu. To izmanto, kad kompilators nevar droši veikt pārvēršanu automātiski, piemēram, no pamata klases uz atvasināto vai no lielākas precizitātes tipa uz mazāku (piemēram,doubleuzint). Tas var novest pie datu zuduma vai kļūdas izpildes laikā (InvalidCastException).// Izteikta `double` uz `int` pārvēršana double d = 123.45; int i = (int)d; // i būs 123 // Objekta pārvēršana uz konkrētu tipu object obj = "Hello"; string s = (string)obj; // s būs "Hello" -
Netieša pārvēršana (Implicit conversion): Automātiski tiek veikta kompilatorā, kad pārvēršana ir zināma un droša, tas ir, bez datu zuduma. Piemēram, no
intuzdouble.// `int` uz `double` netieša pārvēršana int x = 10; double y = x; // y būs 10.0 // Nozīmīga klases pārvēršana uz bāzes klasi class Base {} class Derived : Base {} Derived derivedObj = new Derived(); Base baseObj = derivedObj; // Netieša pārvēršana
Turklāt ir operatori as un is, kas arī attiecas uz tipu pārvēršanu, bet ar savām īpatnībām:
-
Operators
as: Veic tipu pārvēršanu, ja tas ir iespējams, un atgriežnull, ja neizdodas. Neizraisa InvalidCastException. To izmanto tikai atsauces tipiem un Nullable tipiem.// `as` operatora izmantošana object obj2 = "World"; string s2 = obj2 as string; // s2 būs "World" object obj3 = 123; string s3 = obj3 as string; // s3 būs null -
Operators
is: Pārbauda, vai objekts ir noteikta tipa vai tā atvasināta. Atgriežtruevaifalse. Jaunākajās C# versijās to var izmantot ar pattern matching, lai vienlaikus pārbaudītu un pārvērstu.// `is` operatora izmantošana tipa pārbaudei object obj4 = "Example"; if (obj4 is string) { // Darbības, ja objekts ir virknes tips } // `is` ar pattern matching if (obj4 is string str) { // str ir pieejams kā virknes tips }