- •1. .Net архитектурасы.Net-ке бағытталған кодтын орындалуы және компиляциясы. Microsoft Intermediate Language (msil) тілінің артықшылықтары.
- •3. С# программалау тілінің негізі. Айнымалыларды жариялау. Айнымалыларды инициялизациялау олардың көріну облысы.
- •5. Консольді енгізу-шығару үшін System.Console-ді пайдалану. Процессор директивтері.
- •6. Объекті/ ж/е типтер. Структура және кластардың өзара айырмашылық/ы. Класс мүшелері.
- •8. Конструкторлар және статикалық конструкторлар. Тек оқуға рұқсат етілген өріс.
- •9. Жекеленген кластар. Статикалық кластар. Object класы.
- •10. Мұралау. Мұралау типі. Іске асыруды (реализация) мұралау.
- •11. Мұралау. Рұқсат модификаторлары. Интерфейстер.
- •12. Жалпылау. Жалпылауға шолу. Жалпыланған кластар құру.
- •13. Жалпыланған кластар құралдары. Жалпыланған интерфейстер.
- •14. Жалпыланған структуралар. Жалпыланған әдістер.
- •15. Массивтер және кортеждер. Жай массивтер. Көпөлшемді массивтер.
- •16. Тісті массивтер. Array класы.
- •17. Массивтер параметр ретінде. Тізім бойынша санау.
- •18. Кортеждер. Құрылымдық салыстыру.
- •20. Мәліметтердің қарапайым типтерін өзара өзгерту. Қаптама(boxing) құралдарымен мәндер типін сілтеме типке өзгерту.
- •21. Сілтеме типтерді келтіру арқылы өзгерту. Стандартты операцияларды қолданушы типтер үшін асыра жүктеу.
- •Vector структурасы
- •22. Келтіру операцияларын қолданушы типтерге қосу.
- •23. Делегаттар. Лямбда-өрнектер. Уақиғалар.
- •24. Сөз тіркесін құру. Жүйелі өрнектер.
- •25. Сөз тіркесін құру. Форматтаушы өрнектер.
- •26.Интерфейстер және коллекциялар типтері. Тізім, кезек және стектермен жұмыс.
- •27. Сортталған және жүйелі тізімдермен жұмыс. Жиындар мен сөздікті пайдалану.
- •29. Қателер және ерекшеліктер. Ерекшеліктерді өңдеу.
- •30. .Net ядросы. Деректер базасына қосылу. Команданы орындау.
18. Кортеждер. Құрылымдық салыстыру.
Массивтер бір типті объектілерді жүйелесе, кортеждер әр түрлі типті объектілерді жүйелей алады. .NET 4-те кортеждердің фабрикасы қызметін атқаратын сегіз Tuple жалпылама классы және Tuple бір статистикалық классы анықталған. Әр түрлі мөлшерлі элементті қолдайтын Tuple жалпылама класстары әр түрлі болады: Tuple<T1> бір элементті, Tuple<T1, T2> екі элементтен тұрады.
Divide() методы кортеждің екі мүшесінің қайтуын көрсетеді - Tuple<int,int>. Жалпылама класстың параметрі мүшелердің типін анықтайды, біздің жағдайда екеуі де бүтін сан. Кортеж Tuple статистикалық классының Create() статистикалық методымен жасалған. Create() методының жалпылама параметрлері кортеждің жасалынып жатқан экземплярының типін анықтайды. Қайта жасалынған кортеж бөлінгіш нәтижесін қайтару үшін result және reminder айнымалыларымен инициализацияланады.
Public static<int,int> Divide(int dividend, int divisor)
{
Int result=dividend/divisor;
Int reminder=dividend%divisor;
Return Tuple.Create<int,int>(result,reminder);
}
Келесі кодта Divide() методын шақыру көрсеілген. Кортеж элементтері Item1 және Item2 ерекшеліктері арқылы ғана қолжетімді.
Var result=Divide(5,2);
Console.WriteLine(“resultat delenia: {0}, ostatok:{1}”,
Result.Item1, result.Item2);
Кортежге енгізілетін элемент саны сегізден көп болған жағдайда сегіз параметрлі Tuple классының анықтамасын қолдануға болады. Кортеждің өзі берілетін соңғы параметр TRest деп аталады. Осылайша параметр санына шектеусіз кортеждер жасауға болады.
Бұл функционалдылықты көрсету үшін келесідей код жазамыз:
Public class Tuple<T1,T2,T3,T5,T6,T7,TRest>
Мұнда шаблонның соңғы параметрі кортеждің типі болып табылады, осылайша кез келген көлемді кортеж жасауға болады:
Var tuple=Tuple.create<string,string,string,int,int,int,double,
Tule<int,int>>(“Stephanie”,”Alina”,”Nagel”,2009,6,2,1,37,
Tuple.create<int,int>(52,3490));
Құрылымдық салыстыру
Массивтер сияқты кортеждер де IStructuralEquatable және IStructuralComparable интерфейстерін жүзеге асырады. Бұл интерфейстер .NET 4-те пайда болды және сілтемелерді ғана емес, сондайақ оның ішіндегілерді де салыстыруға мүмкіндік береді. Интерфейс айқын жүзеге асырылады, сондықтан оны қолдану кезінде массивтер мен кортеждердің келуін іске асыру керек. IstructuralEquatable екі кортеж немесе кортеждің ішіндегілер бірдей ма соны анықтайды, ал IstructuralComparable кортеждер мен массивтерді сорттау үшін пайдаланылады. КЕлесі мысалда IstructuralEquatableдың қолданылуын көрсететін, lEquatable интерфейсі іске асырылатын Person классы құрылған. Бұл интерфейс FirstName және LastNAme ерекшеліктерін салыстыратын Equals() типталған методын анықтайды:
Төменде Person элементтерінің екі массиві құрылады. Екеуі де бірдей Person объектісінен тұрады, ол janet есімді айнымалы және ішіндегі әр түрлі болатын Person екі түрлі объектісінен тұрады. != салыстыру операциясы true қайтарады, себебі бұлар persons1 және persons2 екі айнымалысы сілтелінетін екі түрлі массив. Equals() методы бірпараметрлі және Array классымен қайта анықталатын болғандықтан, == операциясымен де осындай жағдай болады, сілтемелерді салыстыранда олар сәйкес келмейді.
Equals() методын шақырғанда, IstructuralEquatable анықтауды қабылдайтын object типті бірінші параметрі және екінші IstructuralComparable типті параметр салыстыру қалай жүретіні туралы анықтайтынын көрсетеді. IstructuralComparable іске асырылуы EqualityComparer<T> классы бойынша көрсетіледі. Онда IEquatable іске асыралама жоқ па тексеру жүргізіледі де, IEquatable.Equals() шақырылады. Егер тип IEquatable іске асырмаса, онда салыстыру үшін object класының Equals() методы шақырылады.
Person классы IEquatable<Person> іске асырады, онда объектілер салыстырылады және массивтер шынымен де бірдей объектілерден тұратындығы анықталады:
Енді осыларды кортеждерді енгізу арқылы қалай жасауға болатыны жайлы көрсетіледі. Төменде бірдей объектілі кортеждердің екі экземпляры құрылады. Әрине T1 және t2 сілтемелері екі түрлі объектіге сілтегендіктен != салыстыру операциясы true қайтарады:
Tuple<> классы Equals() екі методын ұсынады: біріншісі object класынан параметр негізінде Object базалық класынан іске асыруды қайта анықтайтын, екнішісі object және IEqualityComparer параметрлі IStructuralEqualityComparer интерфейсі арқылы анықталған. Көрсетілгендей басқа кортеж бірінші методқа берілуі мүмкін. Осылайша кортеждегі әрбір элемент Object.Equals() методын шақыру негізінде салыстырылады. Егер әрбір элементке true қайтарылатын болса, Equals() методының соңғы нәтижесі де true болады:
Сондайақ төменде көрсетілген TupleComparer классының мысалында IEqualityComparer арнайы интерфейсін құруға болады. Бұл класста IEqualityComparer интерфейстің екі метод іске асыралған: Equals() және GetHashCOde() .
IEqualityComparer интерфейстің Equals() методын іске асыру үшін new модификаторы немесе айқын емес интерфейсті іске асыруы қажет, ссебебі Object базалық класы екі параметрлі Equals() статистикалық методын анықтайды.
19. C#-тағы операциялар. Мәндер типімен және сілтемелермен жұмыс жасау кезіндегі эквиваленттілік идеясы.
C# тілінде орындалатын операциялар:
-
Категориялар
Операциялар
Арифметикалық
+ - * / %
Логикалық
& | ^ ~ && || !
Өріс конкотенциясы
+
Инкремент және декремент
++ --
Биттік жылжыту
<< >>
Салыстыру
== != <> <= =>
Меншіктеу
= += -= *= /= %= &= |= ^= <<= >>=
Мүшеге қол жетімділік
.
Индексациялау
[]
Келтіру
()
Объект құру
New
Тип туралы ақпарат
Size of tupe as
C# операцияларын қолданған кезде абай болатын жағдайлар болады. C# тілінде басқаларда сияқты меншіктеу (=) және салыстыру(==) операциялары орындалады. Мысалы келесі оператор х үшке тең дегенді білдіреді:
x=3;енді егер сіз хті салыстырғыңыз келсе, онда сіз қос теңдік == белгісін қолдануыңыз керек:
If (x==3)
{
}
C# тілінде жұмыс істеуді жеңілдету мақсатында операцияларды қысқарту қолданылады:
Шартты операциялар
Шартты операторлар (?:) немесе тернарлы деп те аталады, ол if…else операторының қысқартылған түрі. Ол үш операндпен жұмыс істейді. Бұл операция есептеп шығарып, бір жауапты таңдайды. Шарт дұрыс немесе дұрыс еместігін анықтайды.
Chiced unChiced операциялары. Бұл операторлар қателіктің жоқ екендігін тексеруге арналған операциялар болып табылады.
Is операциясы объект берілген типке сәйкестігін тексереді.
as операциясы Сілтемелі айнымалар типтерін қайта жасау үшін арналған операция.
