C# да кандай түрдөгү түрлөрдү түрлөрү бар?
sobes.tech AI
AIден жооп
C# тилде эки негизги түрдүү түргө түрмө бар:
-
Ачык түрмө (Explicit conversion):
(тип)операторун колдонуу талап кылынат. Бул автоматтык түрдө коопсуз эмес түрмөдө колдонулат, мисалы, негизги класстен туундулук класска же чоң тактыктагы типтен кичине тактыктагы типке (мисалы,doubleданint) которууда. Бул маалымат жоготууга же иштөө учурунда катага алып келиши мүмкүн (InvalidCastException).// `double`дан `int`ке ачык түрмө double d = 123.45; int i = (int)d; // i 123 болот // Объектти конкреттүү түргө ачык түрмө object obj = "Hello"; string s = (string)obj; // s "Hello" болот -
Жасырын түрмө (Implicit conversion): Компилятор автоматтык түрдө ишке ашырат, эгер которуу белгилүү жана коопсуз болсо, яғни маалымат жоготуу жок. Мисалы,
intтенdoubleга которуу.// `int`тен `double`га жасалган жасырын түрмө int x = 10; double y = x; // y 10.0 болот // Төмөнкү классды жогорку класска которуу class Base {} class Derived : Base {} Derived derivedObj = new Derived(); Base baseObj = derivedObj; // Жасырын түрмө
Мындан тышкары, as жана is операторлору да бар, алар да түрмөдө колдонулат, бирок өзгөчөлүктөрү менен:
-
asоператоры: Түрмөдө мүмкүн болсо, ишке ашырат жанаnullкайтарат, эгер ишке ашыруу мүмкүн болбосо. InvalidCastException исключениин чыгарбайт. Бул оператор сылтамалуу типтер жана Nullable типтери үчүн гана колдонулат.// `as` операторун колдонуу object obj2 = "World"; string s2 = obj2 as string; // s2 "World" болот object obj3 = 123; string s3 = obj3 as string; // s3 null болот -
isоператоры: Объект белгилүү бир типтин же анын туундусунун экземпляри экенин текшерет.trueжеfalseкайтарат. Соңку C# версияларында pattern matching менен колдонулуп, бир эле учурда текшерүү жана түрмөдө колдонуу мүмкүн:// `is` оператору менен типти текшерүү object obj4 = "Example"; if (obj4 is string) { // Эгер объект жол болсо, аракеттер } // Pattern matching менен `is` колдонуу if (obj4 is string str) { // str бул жерде жол катары жеткиликтүү }