SlideShare une entreprise Scribd logo
1  sur  37
Лекц №3
C# хэлний тухай
C# хэл нь .NET Фреймворктэй хамт зохиогдсон шинэ
програмчлалын хэл
C#
хэл
нь
энгийн
боловч
орчин
үеийн
програмчлалын
асуудлуудыг
шийдэхэд
тохиромжтой, өндөр бүтээмжтэй хэл
C# хэл нь C++ болон Java хэлнээс удамшин үүссэн
бөгөөд объект хандлагат, компонентод суурилсан,
бүтцийн програмчлалуудыг бүгдийг нь дэмжинэ.

2
C# програмын бүтэц

3
C# програмын бүтэц
using түлхүүр үг нь програмд ашиглах
классуудын
бүтэн
замыг
зааж
өгөх
шаардлагагүй болгож хялбарчилан холбож
өгдөг.
Програмын логик, өгөгдөл зэрэг бүхий л зүйл
нь класс дотор бичигдэх ѐстой. Классын
хүрээнээс гадуур глобаль хувьсагч гэж
байдаггүй.
C# програм бүрт Main() метод хэрэгтэй байдаг.
Энэ метод нь програмын эхлэх цэг болдог.
Энэ метод нь үргэлж static хувиргагчтай байх
ѐстой бөгөөд M үсэг нь томоор бичигдэх
ѐстой.
4
C# хэлний өгөгдлийн төрөл
C# хэлний төрлүүдийг
 Эгэл төрөл (value type)
 Заалт төрөл (reference type) гэсэн хоёр ангилалд
хуваадаг.

Заалт ба эгэл төрлүүд нь System.Object
классаас удамшсан байдаг.
Заалт төрлүүд нь System.Object классаас
шууд удамшсан байдаг.
Эгэл төрлүүд нь System.Object классаас
System.ValueType
классаар
дамжуулан
удашдаг.
5
C# хэлний өгөгдлийн төрөл

6
C# хэлний өгөгдлийн төрөл
CLR нь заалт ба эгэл төрлүүдийг санах ойд
ялгаатай байршуулдаг.
Эгэл төрлийн объект нь стект байрладаг.
Эгэл төрөл үүсэхдээ 0 утга авдаг.
Заалт төрлийн объектын хаяг нь стект
байрлана, жинхэнэ утга нь хийп санах ойд
байрладаг. Заалт төрөл үүсэхдээ null утга
авдаг.

7
C# хэлний өгөгдлийн төрөл

Apparel myApparel = new Apparel();
Apparel myApparel2 = myApparel;

8
Эгэл буюу үндсэн төрлүүд
C# төрөл

FCL төрөл

object

System.Object

string

System.String

decimal

System.Decimal

bool

System.Boolean

char

System.Char

byte

System.Byte

sbyte

System.SByte

short

System.Int16

int

System.Int32

long

System.Int64

ushort

System.UInt16

uint

System.UInt32

ulong

System.UInt64

float

System.Single

double

System.Double

9
Эгэл буюу үндсэн төрлүүд
C#
хэлний
үндсэн
төрлүүд
фреймворкийн төрөлтэй харгалзана.

бүгд

Аль ч төрлийг нь хэрэглэж болно.
Төрөл бүр
эзлэнэ.

санах

ойд

тогтмол

хэмжээ

Жишээ: Дараах хувьсагч зарлалтууд нь бүгд
ижил IL код үүсгэнэ.
System.Int32 age = new System.Int32(17);
int age = 17;
System.Int32 age = 17;

10
Эгэл буюу үндсэн төрлүүд
Үндсэн төрөлтэй ажиллаж байх үед дараах
онцлог зүйлс байна.

C#
хэлний
үндсэн
төрлүүд
нь
фреймворкийн бүтэц төрлүүд байдаг. Уг
бүтцүүдийн гишүүд нь тухайн төрөл дээр
ажиллах
нэмэлт
боломжуудыг
бий
болгодог.
Тодорхой төрлийн утгуудын ард дагавар
үсэг тавихыг шаарддаг.

11
Эгэл буюу үндсэн төрлүүд
Энэ төрөл нь 128 бит хэмжээтэй, 28
цифрийн нарийвчлалтай бодит тоон төрөл
юм.
decimal төрлийн тогтмол утгын ард М үсэг
тавина.
decimal iRate = 3.9834M;
// M үсэг нь
decimal
iRate = decimal.Round(iRate,2);
// 3.98
decimal p = decimal.Parse("100.05");

12
Эгэл буюу үндсэн төрлүүд
Энэ төрөл нь зөвхөн true ба false утга авна.
bool төрлийн утгыг бүхэл тоон төрөлрүү
хөрвүүлж болохгүй.
bool bt = true;
string bStr = bt.ToString(); // "true"
bt = (bool) 1;
// Буруу

13
Эгэл буюу үндсэн төрлүүд
Энэ төрөл нь 16 бит юникод тэмдэгтийг
дүрслэх ба тэмдэггүй бүхэл тоо
Тэмдэгтийн утгыг дан хашилтад бичнэ.
myChar = 'B';
myChar = (char) 66; // 'B' -ын ASCII код 66 байдаг. Төрөл
хувиргав
bool bt; string pattern = "123abcd?";
myChar = pattern[0];
// '1‘
bt = char.IsLetter(pattern,3);
// true ('a')
bt = char.IsNumber(pattern,3);
// false
bt = char.IsNumber(pattern,2);
// true ('3')

14
Эгэл буюу үндсэн төрлүүд
byte нь 0-ээс 255 хүртэлх
тэмдэггүй 8 бит бүхэл тоо

утгыг авах

sbyte нь -128-с 127 хүртэлх утгыг авах
тэмдэгтэй 8 бит бүхэл тоо

15
Эгэл буюу үндсэн төрлүүд
short, int, long төрлүүд нь харгалзан 16, 32,
64 бит тэмдэгтэй бүхэл тоо
ushort, uint, ulong төрлүүд нь харгалзан 16,
32, 64 бит тэмдэггүй бүхэл тоо
int iMax = int.MaxValue; // хамгийн их 32 бит
бүхэл тоо
int pVal = int.Parse("100"); // тэмдэгт мөрлүү
хувиргах

16
Эгэл буюу үндсэн төрлүүд
float төрөл нь 1.5 x 10 –45 -с 3.4 x 1038 хүртэл
утга бүхий 7 цифрийн нарийвчлалтай бодит
тоо
double төрөл нь 5 x 10 –324 -с 1.7 x 10308
хүртэл
утга
бүхий
15-16
цифрийн
нарийвчлалтай бодит тоо
Бодит тоон үйлдлийн үр дүн тодорхой бус
үед NaN (Not a Number) утга буцаана.
Бодит тоог өөр төрөлрүү хувиргахдаа
System.Convert методыг ашиглана.
17
Эгэл буюу үндсэн төрлүүд
float төрлийн тогтмол утгын ард F үсэг тавина.
double төрлийн тогтмол утгын ард D үсэг
тавина.
float xFloat = 24567.66F;
int xInt = Convert.ToInt32(xFloat); // returns
24567
int xInt2 = (int) xFloat;
string xStr = Convert.ToString(xFloat);
single zero = 0;
double xDouble = 124.56D;
18
Эгэл буюу үндсэн төрлүүд
 Тоочих төрөл буюу enum төрөл нь нэр оноосон
тогтмол утгуудын олонлог юм.
 enum төрөл дэхь нэрүүдэд утга оноогоогүй бол
автоматаар 0,1,2,3 гэх мэт утгатай болно.

 Хандалт нь enum төрлийн хэрэглэгдэх хүрээг
тодорхойлно. Үндсэн хандалт нь internal байдаг ба
энэ нь тухайн ассемблей доторх ямар ч классаас
хандахыг
зөвшөөрнө.
Public
хандалтыг
ашигласнаар ямарч ассемблейн ямарч классаас
хандахыг зөвшөөрнө.
 Суурь төрөл нь тогтмолын утга ямар төрөлтэй
байхыг тодорхойлно.
19
Эгэл буюу үндсэн төрлүүд
Синтакс:

Жишээ:

[access modifiers]enum <identifier> [:enum-base]
{
enum body
}

enum Fabric:short {
Cotton = 1,
Silk = 2,
Wool = 4,
Rayon = 8,
Other = 128
}

20
Эгэл буюу үндсэн төрлүүд
 Бүтэц төрлийг
тодорхойлдог

классын

хөнгөн

хувилбар

гэж

 Бүтэу нь классын адил талбар, метод, проперти,
үзэгдэл, байгуулагч гишүүдтэй байна.

 Бүтэц төрөл нь эгэл төрөл учраас програмаас
харьцахад ойр, шууд стект байрлана. Энэ нь хийп
санах ой дахь өгөгдөлрүү заагчаар дамжуулан
хандаснаас илүү хурдан байдаг сайн талтай
 Бүтэц төрлийг метод буцах төрөлд ашиглах,
параметр болгон дамжуулахад удаан байдаг муу
талтай
21
Эгэл буюу үндсэн төрлүүд
Синтакс:

Жишээ:

[attribute][modifier] struct
identifier [:interfaces]

public struct DressShirt

{
public float CollarSz;

{

public int SleeveLn;

struct-body

}

// constructor

public DressShirt(float collar, int sleeve)
{
this.CollarSz = collar;
this.SleeveLn = sleeve;
}
}
22
Заалт төрлүүд
System.String буюу string класс нь 16 бит
юникод тэмдэгтүүдийн дарааллыг төлөөлөх
заалт төрөл.
Тэмдэгт мөрийг тодорхойлохдоо дараах
хоѐр хэлбэрийг ашиглаж болно.
 Эскэйп хэлбэр – давхар хашилтанд хийх
 Ердийн хэлбэр – давхар хашилтын өмнө @ тэмдэг
ашиглах
 path
 path
23

= @"c:my documentsnotes.txt";
= "c:my documentsnotes.txt";
Заалт төрлүүд
 System.String буюу string класс нь 16 бит юникод
тэмдэгтүүдийн дарааллыг төлөөлөх заалт төрөл.
 Тэмдэгт мөрийг тодорхойлохдоо
хэлбэрийг ашиглаж болно.

дараах

хоѐр

 Эскэйп хэлбэр – давхар хашилтанд хийх
 Ердийн хэлбэр – давхар хашилтын өмнө @ тэмдэг
ашиглах
 path

= @"c:my documentsnotes.txt";

 path

= "c:my documentsnotes.txt";

 System.String класс нь тэмдэгт мөртэй ажиллах
методуудыг агуулдаг.
24
Заалт төрлүүд
Массив
нь
нэгэн
ижил
өгөгдлүүдийг хадгалах төрөл

төрлийн

C# -д 3 төрлийн массив байдаг.
1. ArrayList – массивыг динамикаар удирдах боломж
олгопог.
2. List – ArrayList төрлийн аюулгүй хувилбар.
3. System.Array – массивын элемэнтүүд дээр
боловсруулалт хийх олон методуудыг агуулдаг.

<төрөл> нэр [ ] = new <төрөл> [n] [{ эхний
утгууд}]
25
Заалт төрлүүд
 int[] myRating;

// массив зарлах

 myRating = new int[5];

хуваарилах

//массив үүсгэх, санах ой

 int[] myRating = new int[5] {3,4,7,2,8};

 int[] myRating = {3,4,7,2,8}; // товч бичиглэл
 Apparel myApparel = {new Apparel(), new Apparel(),
new Apparel()); // Apparel объектыг агуулах массив
 Fabric[] enumArray = new Fabric[2];
 enumArray[0] = Fabric.Cotton; //тоочих төрөлтэй массив
 int[ , ] myRatings = {{3 , 7}, {4 , 9}, {2, 6}}; //3 мөр, 2

багана
26
C# хэлний үйлдлүүд

Үйлдэл Эрэмбэ

Тодорхойлолт

+

3

Нэмэх

_

3
2

Үржих

/

2

Хуваах

%

2

Үлдэгдэлээр хуваах

++

1

Нэмэгдүүлэх

__

1

Хорогдуулах

int x = y + 10;

Хасах

*

Жишээ

27

int x = 60; int y = 15;
int z = x * y / 2; // 450
y = x % 29 ; // 2
x = 5;
Console.WriteLine(x++) // x = 5
Console.WriteLine(++x) // x = 6
C# хэлний үйлдлүүд

Үйлдэл

Эрэмбэ Тодорхойлолт

жишээ

~

1

Бит гүйцээлт

int x = ~127; // returns -128

>>

4

Баруун шилжүүлэх

<<

4

Зүүн шилжүүлэх

byte x = 10; // binary 10 is 01010
int result = x << 1; // 20 = 10100
result = x >> 2;
// 5 = 00101

&

5

Бит AND

|

6

Бит OR

^

7

Бит XOR

28

byte x = 12;
// 001100
byte y = 11;
// 001011
int result = x & y; //8 = 001000
result = x ^ y;
//7 = 000111
C# хэлний үйлдлүүд

Үйлдэл

Тодорхойлолт

==

Тэнцүү

!=

Тэнцүү биш

<

Бага

<=

Бага буюу тэнцүү

>

Их

>=

Их буюу тэнцүү

жишээ

29

if (x == y) {...}

if (x <= y) {...}
C# хэлний үйлдлүүд

Тодорхойлолт

жишээ

&&

Логик AND

||

Логик OR

if (x == y && y < 30) {...}
Хэрвээ эхний илэрхийлэл худал бол
дараагийн илэрхийлэлийг үнэлэхгүй

&

Логик AND

|

Логик OR

if (x== y | y < 30) {...}
Үргэлж хоёр дахь илэрхийллийг үнэлнэ.

!

Логик үгүйсгэл

if !(x ==y && y < 30) {...}

Үйлдэл

30
C# хэлний үйлдлүүд
Синтакс:
if (boolean expression) {

Жишээ:
if (bmi < 24.9) {
weight = "normal";

// statements
} else {
// statements

riskFactor = 2;
} else {
weight = "over";

}

riskFactor=6;
}

31
C# хэлний үйлдлүүд
Синтакс:

Жишээ:

switch (expression)
{
case constant expression:
// statements;
// break/goto/return()
case constant expression:
// statements;
// break/goto/return()
default:
// statements;
// break/goto/return()
}

switch (ndx)
{
case 1:
fabric = "cotton";
blend = "100%";
break;
case 2: // 2 ба 3 хамт
case 3:
fabric = "cotton";
blend = "60%";
break;
default: // optional
fabric = "cotton";
blend = "50%";
break;
}

32
C# хэлний үйлдлүүд
Синтакс:

Жишээ:

while ( boolean expression )
{
body
}

byte[] r = {0x00, 0x12, 0x34, 0x56, 0xAA, 0x55,
0xFF};
int ndx=0;
int totVal = 0;
while (ndx <=6)
{
totVal += r[ndx];
ndx += 1;
}

33
C# хэлний үйлдлүүд
Синтакс:

Жишээ:

do
{

byte[] r = {0x00, 0x12, 0x34, 0x56, 0xAA,
0x55, 0xFF};

do-body
} while ( boolean expression );

int ndx=0;
int totVal = 0;
do
{
totVal += r[ndx];
ndx += 1;
}while (ndx <= 6);

34
C# хэлний үйлдлүүд
Синтакс:

Жишээ:

for ( [initialization];
[termination condition];
[iteration] )

int[] r = {80, 88, 90, 72, 68, 94, 83};

{

for (int ndx = 0; ndx <= 6; ndx++)
{

for-body

}

int totVal = 0;

totVal += r[ndx];
}

35
C# хэлний үйлдлүүд
Синтакс:

Жишээ:

foreach ( type identifier in
collection )
{
body
}

int totVal = 0;
foreach (int arrayVal in r)
{
totVal += arrayVal;
}

36
C# хэлний үйлдлүүд
Синтакс:
break
continue
goto identifier;
goto case exp;
goto default;

return [expression] ;

37

Contenu connexe

Tendances

Tendances (20)

Day 1 database
Day 1   databaseDay 1   database
Day 1 database
 
Sw203 Lecture5 Class Acess Modifiers
Sw203 Lecture5 Class Acess ModifiersSw203 Lecture5 Class Acess Modifiers
Sw203 Lecture5 Class Acess Modifiers
 
Sw203 Lecture6 Inheritance
Sw203 Lecture6 InheritanceSw203 Lecture6 Inheritance
Sw203 Lecture6 Inheritance
 
It101 lec6 10.06
It101 lec6 10.06It101 lec6 10.06
It101 lec6 10.06
 
Ogogdliin sangiin zohion baiguulalt lekts
Ogogdliin sangiin zohion baiguulalt lektsOgogdliin sangiin zohion baiguulalt lekts
Ogogdliin sangiin zohion baiguulalt lekts
 
U.cs101 алгоритм программчлал-2
U.cs101   алгоритм программчлал-2U.cs101   алгоритм программчлал-2
U.cs101 алгоритм программчлал-2
 
User requirements
User requirementsUser requirements
User requirements
 
Excel function
Excel functionExcel function
Excel function
 
Өгөгдлийн бүтэц
Өгөгдлийн бүтэцӨгөгдлийн бүтэц
Өгөгдлийн бүтэц
 
Салаалсан алгоритмын бодлогууд
Салаалсан алгоритмын бодлогуудСалаалсан алгоритмын бодлогууд
Салаалсан алгоритмын бодлогууд
 
C cons
C consC cons
C cons
 
класс диаграм
класс диаграмкласс диаграм
класс диаграм
 
Cs203 lecture13 composition
Cs203 lecture13 compositionCs203 lecture13 composition
Cs203 lecture13 composition
 
Ood lesson4
Ood lesson4Ood lesson4
Ood lesson4
 
Rdbms 300 test
Rdbms 300 testRdbms 300 test
Rdbms 300 test
 
Presentation1 өгөгдлийн сан
Presentation1 өгөгдлийн санPresentation1 өгөгдлийн сан
Presentation1 өгөгдлийн сан
 
давталттай алгоритм
давталттай алгоритмдавталттай алгоритм
давталттай алгоритм
 
мэдээллийн системийн үндэс
мэдээллийн системийн үндэсмэдээллийн системийн үндэс
мэдээллийн системийн үндэс
 
5 algorithm
5 algorithm5 algorithm
5 algorithm
 
Лекц №10
Лекц №10Лекц №10
Лекц №10
 

Similaire à лекц-3 (20)

Лекц 3
Лекц 3Лекц 3
Лекц 3
 
visual programming lecture 2
visual programming lecture 2visual programming lecture 2
visual programming lecture 2
 
visual programming lecture 2
visual programming lecture 2visual programming lecture 2
visual programming lecture 2
 
2
22
2
 
visual programming lecture 2
visual programming lecture 2visual programming lecture 2
visual programming lecture 2
 
Lec3
Lec3Lec3
Lec3
 
203lec2
203lec2203lec2
203lec2
 
Лекц №6
Лекц №6Лекц №6
Лекц №6
 
Lecture 1
Lecture 1Lecture 1
Lecture 1
 
Лекц-1
Лекц-1Лекц-1
Лекц-1
 
Lecture2
Lecture2Lecture2
Lecture2
 
Lecture 2
Lecture 2Lecture 2
Lecture 2
 
U.cs101 алгоритм программчлал-12
U.cs101   алгоритм программчлал-12U.cs101   алгоритм программчлал-12
U.cs101 алгоритм программчлал-12
 
үндсэн функцууд
үндсэн функцуудүндсэн функцууд
үндсэн функцууд
 
Lecture3
Lecture3Lecture3
Lecture3
 
Ci hel
Ci helCi hel
Ci hel
 
3
33
3
 
33
3333
33
 
си хэлний хичээлүүд 11 р анги
си хэлний хичээлүүд 11 р ангиси хэлний хичээлүүд 11 р анги
си хэлний хичээлүүд 11 р анги
 
Lekts1
Lekts1Lekts1
Lekts1
 

Plus de Chinzorig Undarmaa (20)

Лабораторийн ажил 12
Лабораторийн ажил 12Лабораторийн ажил 12
Лабораторийн ажил 12
 
Лекц 8
Лекц 8Лекц 8
Лекц 8
 
Лекц 8
Лекц 8Лекц 8
Лекц 8
 
Лекц 8
Лекц 8Лекц 8
Лекц 8
 
Лекц 8
Лекц 8Лекц 8
Лекц 8
 
Хичээлийн тодорхойлолт
Хичээлийн тодорхойлолтХичээлийн тодорхойлолт
Хичээлийн тодорхойлолт
 
Бие даалтын удирдамж
Бие даалтын удирдамжБие даалтын удирдамж
Бие даалтын удирдамж
 
Лекц 1
Лекц 1Лекц 1
Лекц 1
 
Лекц 2
Лекц 2Лекц 2
Лекц 2
 
Лекц 3
Лекц 3Лекц 3
Лекц 3
 
Лабораторийн ажил 3 - 4
Лабораторийн ажил 3 - 4Лабораторийн ажил 3 - 4
Лабораторийн ажил 3 - 4
 
Лекц 4
Лекц 4Лекц 4
Лекц 4
 
Лабораторийн ажил 5 - 6
Лабораторийн ажил 5 - 6Лабораторийн ажил 5 - 6
Лабораторийн ажил 5 - 6
 
Лекц 5 - 6
Лекц 5 - 6Лекц 5 - 6
Лекц 5 - 6
 
Лабораторийн ажил 7
Лабораторийн ажил 7Лабораторийн ажил 7
Лабораторийн ажил 7
 
Лекц 7
Лекц 7Лекц 7
Лекц 7
 
Хичээлийн тодорхойлолт
Хичээлийн тодорхойлолтХичээлийн тодорхойлолт
Хичээлийн тодорхойлолт
 
Хичээлийн тодорхойлолт
Хичээлийн тодорхойлолтХичээлийн тодорхойлолт
Хичээлийн тодорхойлолт
 
Бие даалтын удирдамж
Бие даалтын удирдамжБие даалтын удирдамж
Бие даалтын удирдамж
 
Лабораторийн ажил 7
Лабораторийн ажил 7Лабораторийн ажил 7
Лабораторийн ажил 7
 

лекц-3

  • 2. C# хэлний тухай C# хэл нь .NET Фреймворктэй хамт зохиогдсон шинэ програмчлалын хэл C# хэл нь энгийн боловч орчин үеийн програмчлалын асуудлуудыг шийдэхэд тохиромжтой, өндөр бүтээмжтэй хэл C# хэл нь C++ болон Java хэлнээс удамшин үүссэн бөгөөд объект хандлагат, компонентод суурилсан, бүтцийн програмчлалуудыг бүгдийг нь дэмжинэ. 2
  • 4. C# програмын бүтэц using түлхүүр үг нь програмд ашиглах классуудын бүтэн замыг зааж өгөх шаардлагагүй болгож хялбарчилан холбож өгдөг. Програмын логик, өгөгдөл зэрэг бүхий л зүйл нь класс дотор бичигдэх ѐстой. Классын хүрээнээс гадуур глобаль хувьсагч гэж байдаггүй. C# програм бүрт Main() метод хэрэгтэй байдаг. Энэ метод нь програмын эхлэх цэг болдог. Энэ метод нь үргэлж static хувиргагчтай байх ѐстой бөгөөд M үсэг нь томоор бичигдэх ѐстой. 4
  • 5. C# хэлний өгөгдлийн төрөл C# хэлний төрлүүдийг  Эгэл төрөл (value type)  Заалт төрөл (reference type) гэсэн хоёр ангилалд хуваадаг. Заалт ба эгэл төрлүүд нь System.Object классаас удамшсан байдаг. Заалт төрлүүд нь System.Object классаас шууд удамшсан байдаг. Эгэл төрлүүд нь System.Object классаас System.ValueType классаар дамжуулан удашдаг. 5
  • 7. C# хэлний өгөгдлийн төрөл CLR нь заалт ба эгэл төрлүүдийг санах ойд ялгаатай байршуулдаг. Эгэл төрлийн объект нь стект байрладаг. Эгэл төрөл үүсэхдээ 0 утга авдаг. Заалт төрлийн объектын хаяг нь стект байрлана, жинхэнэ утга нь хийп санах ойд байрладаг. Заалт төрөл үүсэхдээ null утга авдаг. 7
  • 8. C# хэлний өгөгдлийн төрөл Apparel myApparel = new Apparel(); Apparel myApparel2 = myApparel; 8
  • 9. Эгэл буюу үндсэн төрлүүд C# төрөл FCL төрөл object System.Object string System.String decimal System.Decimal bool System.Boolean char System.Char byte System.Byte sbyte System.SByte short System.Int16 int System.Int32 long System.Int64 ushort System.UInt16 uint System.UInt32 ulong System.UInt64 float System.Single double System.Double 9
  • 10. Эгэл буюу үндсэн төрлүүд C# хэлний үндсэн төрлүүд фреймворкийн төрөлтэй харгалзана. бүгд Аль ч төрлийг нь хэрэглэж болно. Төрөл бүр эзлэнэ. санах ойд тогтмол хэмжээ Жишээ: Дараах хувьсагч зарлалтууд нь бүгд ижил IL код үүсгэнэ. System.Int32 age = new System.Int32(17); int age = 17; System.Int32 age = 17; 10
  • 11. Эгэл буюу үндсэн төрлүүд Үндсэн төрөлтэй ажиллаж байх үед дараах онцлог зүйлс байна. C# хэлний үндсэн төрлүүд нь фреймворкийн бүтэц төрлүүд байдаг. Уг бүтцүүдийн гишүүд нь тухайн төрөл дээр ажиллах нэмэлт боломжуудыг бий болгодог. Тодорхой төрлийн утгуудын ард дагавар үсэг тавихыг шаарддаг. 11
  • 12. Эгэл буюу үндсэн төрлүүд Энэ төрөл нь 128 бит хэмжээтэй, 28 цифрийн нарийвчлалтай бодит тоон төрөл юм. decimal төрлийн тогтмол утгын ард М үсэг тавина. decimal iRate = 3.9834M; // M үсэг нь decimal iRate = decimal.Round(iRate,2); // 3.98 decimal p = decimal.Parse("100.05"); 12
  • 13. Эгэл буюу үндсэн төрлүүд Энэ төрөл нь зөвхөн true ба false утга авна. bool төрлийн утгыг бүхэл тоон төрөлрүү хөрвүүлж болохгүй. bool bt = true; string bStr = bt.ToString(); // "true" bt = (bool) 1; // Буруу 13
  • 14. Эгэл буюу үндсэн төрлүүд Энэ төрөл нь 16 бит юникод тэмдэгтийг дүрслэх ба тэмдэггүй бүхэл тоо Тэмдэгтийн утгыг дан хашилтад бичнэ. myChar = 'B'; myChar = (char) 66; // 'B' -ын ASCII код 66 байдаг. Төрөл хувиргав bool bt; string pattern = "123abcd?"; myChar = pattern[0]; // '1‘ bt = char.IsLetter(pattern,3); // true ('a') bt = char.IsNumber(pattern,3); // false bt = char.IsNumber(pattern,2); // true ('3') 14
  • 15. Эгэл буюу үндсэн төрлүүд byte нь 0-ээс 255 хүртэлх тэмдэггүй 8 бит бүхэл тоо утгыг авах sbyte нь -128-с 127 хүртэлх утгыг авах тэмдэгтэй 8 бит бүхэл тоо 15
  • 16. Эгэл буюу үндсэн төрлүүд short, int, long төрлүүд нь харгалзан 16, 32, 64 бит тэмдэгтэй бүхэл тоо ushort, uint, ulong төрлүүд нь харгалзан 16, 32, 64 бит тэмдэггүй бүхэл тоо int iMax = int.MaxValue; // хамгийн их 32 бит бүхэл тоо int pVal = int.Parse("100"); // тэмдэгт мөрлүү хувиргах 16
  • 17. Эгэл буюу үндсэн төрлүүд float төрөл нь 1.5 x 10 –45 -с 3.4 x 1038 хүртэл утга бүхий 7 цифрийн нарийвчлалтай бодит тоо double төрөл нь 5 x 10 –324 -с 1.7 x 10308 хүртэл утга бүхий 15-16 цифрийн нарийвчлалтай бодит тоо Бодит тоон үйлдлийн үр дүн тодорхой бус үед NaN (Not a Number) утга буцаана. Бодит тоог өөр төрөлрүү хувиргахдаа System.Convert методыг ашиглана. 17
  • 18. Эгэл буюу үндсэн төрлүүд float төрлийн тогтмол утгын ард F үсэг тавина. double төрлийн тогтмол утгын ард D үсэг тавина. float xFloat = 24567.66F; int xInt = Convert.ToInt32(xFloat); // returns 24567 int xInt2 = (int) xFloat; string xStr = Convert.ToString(xFloat); single zero = 0; double xDouble = 124.56D; 18
  • 19. Эгэл буюу үндсэн төрлүүд  Тоочих төрөл буюу enum төрөл нь нэр оноосон тогтмол утгуудын олонлог юм.  enum төрөл дэхь нэрүүдэд утга оноогоогүй бол автоматаар 0,1,2,3 гэх мэт утгатай болно.  Хандалт нь enum төрлийн хэрэглэгдэх хүрээг тодорхойлно. Үндсэн хандалт нь internal байдаг ба энэ нь тухайн ассемблей доторх ямар ч классаас хандахыг зөвшөөрнө. Public хандалтыг ашигласнаар ямарч ассемблейн ямарч классаас хандахыг зөвшөөрнө.  Суурь төрөл нь тогтмолын утга ямар төрөлтэй байхыг тодорхойлно. 19
  • 20. Эгэл буюу үндсэн төрлүүд Синтакс: Жишээ: [access modifiers]enum <identifier> [:enum-base] { enum body } enum Fabric:short { Cotton = 1, Silk = 2, Wool = 4, Rayon = 8, Other = 128 } 20
  • 21. Эгэл буюу үндсэн төрлүүд  Бүтэц төрлийг тодорхойлдог классын хөнгөн хувилбар гэж  Бүтэу нь классын адил талбар, метод, проперти, үзэгдэл, байгуулагч гишүүдтэй байна.  Бүтэц төрөл нь эгэл төрөл учраас програмаас харьцахад ойр, шууд стект байрлана. Энэ нь хийп санах ой дахь өгөгдөлрүү заагчаар дамжуулан хандаснаас илүү хурдан байдаг сайн талтай  Бүтэц төрлийг метод буцах төрөлд ашиглах, параметр болгон дамжуулахад удаан байдаг муу талтай 21
  • 22. Эгэл буюу үндсэн төрлүүд Синтакс: Жишээ: [attribute][modifier] struct identifier [:interfaces] public struct DressShirt { public float CollarSz; { public int SleeveLn; struct-body } // constructor public DressShirt(float collar, int sleeve) { this.CollarSz = collar; this.SleeveLn = sleeve; } } 22
  • 23. Заалт төрлүүд System.String буюу string класс нь 16 бит юникод тэмдэгтүүдийн дарааллыг төлөөлөх заалт төрөл. Тэмдэгт мөрийг тодорхойлохдоо дараах хоѐр хэлбэрийг ашиглаж болно.  Эскэйп хэлбэр – давхар хашилтанд хийх  Ердийн хэлбэр – давхар хашилтын өмнө @ тэмдэг ашиглах  path  path 23 = @"c:my documentsnotes.txt"; = "c:my documentsnotes.txt";
  • 24. Заалт төрлүүд  System.String буюу string класс нь 16 бит юникод тэмдэгтүүдийн дарааллыг төлөөлөх заалт төрөл.  Тэмдэгт мөрийг тодорхойлохдоо хэлбэрийг ашиглаж болно. дараах хоѐр  Эскэйп хэлбэр – давхар хашилтанд хийх  Ердийн хэлбэр – давхар хашилтын өмнө @ тэмдэг ашиглах  path = @"c:my documentsnotes.txt";  path = "c:my documentsnotes.txt";  System.String класс нь тэмдэгт мөртэй ажиллах методуудыг агуулдаг. 24
  • 25. Заалт төрлүүд Массив нь нэгэн ижил өгөгдлүүдийг хадгалах төрөл төрлийн C# -д 3 төрлийн массив байдаг. 1. ArrayList – массивыг динамикаар удирдах боломж олгопог. 2. List – ArrayList төрлийн аюулгүй хувилбар. 3. System.Array – массивын элемэнтүүд дээр боловсруулалт хийх олон методуудыг агуулдаг. <төрөл> нэр [ ] = new <төрөл> [n] [{ эхний утгууд}] 25
  • 26. Заалт төрлүүд  int[] myRating; // массив зарлах  myRating = new int[5]; хуваарилах //массив үүсгэх, санах ой  int[] myRating = new int[5] {3,4,7,2,8};  int[] myRating = {3,4,7,2,8}; // товч бичиглэл  Apparel myApparel = {new Apparel(), new Apparel(), new Apparel()); // Apparel объектыг агуулах массив  Fabric[] enumArray = new Fabric[2];  enumArray[0] = Fabric.Cotton; //тоочих төрөлтэй массив  int[ , ] myRatings = {{3 , 7}, {4 , 9}, {2, 6}}; //3 мөр, 2 багана 26
  • 27. C# хэлний үйлдлүүд Үйлдэл Эрэмбэ Тодорхойлолт + 3 Нэмэх _ 3 2 Үржих / 2 Хуваах % 2 Үлдэгдэлээр хуваах ++ 1 Нэмэгдүүлэх __ 1 Хорогдуулах int x = y + 10; Хасах * Жишээ 27 int x = 60; int y = 15; int z = x * y / 2; // 450 y = x % 29 ; // 2 x = 5; Console.WriteLine(x++) // x = 5 Console.WriteLine(++x) // x = 6
  • 28. C# хэлний үйлдлүүд Үйлдэл Эрэмбэ Тодорхойлолт жишээ ~ 1 Бит гүйцээлт int x = ~127; // returns -128 >> 4 Баруун шилжүүлэх << 4 Зүүн шилжүүлэх byte x = 10; // binary 10 is 01010 int result = x << 1; // 20 = 10100 result = x >> 2; // 5 = 00101 & 5 Бит AND | 6 Бит OR ^ 7 Бит XOR 28 byte x = 12; // 001100 byte y = 11; // 001011 int result = x & y; //8 = 001000 result = x ^ y; //7 = 000111
  • 29. C# хэлний үйлдлүүд Үйлдэл Тодорхойлолт == Тэнцүү != Тэнцүү биш < Бага <= Бага буюу тэнцүү > Их >= Их буюу тэнцүү жишээ 29 if (x == y) {...} if (x <= y) {...}
  • 30. C# хэлний үйлдлүүд Тодорхойлолт жишээ && Логик AND || Логик OR if (x == y && y < 30) {...} Хэрвээ эхний илэрхийлэл худал бол дараагийн илэрхийлэлийг үнэлэхгүй & Логик AND | Логик OR if (x== y | y < 30) {...} Үргэлж хоёр дахь илэрхийллийг үнэлнэ. ! Логик үгүйсгэл if !(x ==y && y < 30) {...} Үйлдэл 30
  • 31. C# хэлний үйлдлүүд Синтакс: if (boolean expression) { Жишээ: if (bmi < 24.9) { weight = "normal"; // statements } else { // statements riskFactor = 2; } else { weight = "over"; } riskFactor=6; } 31
  • 32. C# хэлний үйлдлүүд Синтакс: Жишээ: switch (expression) { case constant expression: // statements; // break/goto/return() case constant expression: // statements; // break/goto/return() default: // statements; // break/goto/return() } switch (ndx) { case 1: fabric = "cotton"; blend = "100%"; break; case 2: // 2 ба 3 хамт case 3: fabric = "cotton"; blend = "60%"; break; default: // optional fabric = "cotton"; blend = "50%"; break; } 32
  • 33. C# хэлний үйлдлүүд Синтакс: Жишээ: while ( boolean expression ) { body } byte[] r = {0x00, 0x12, 0x34, 0x56, 0xAA, 0x55, 0xFF}; int ndx=0; int totVal = 0; while (ndx <=6) { totVal += r[ndx]; ndx += 1; } 33
  • 34. C# хэлний үйлдлүүд Синтакс: Жишээ: do { byte[] r = {0x00, 0x12, 0x34, 0x56, 0xAA, 0x55, 0xFF}; do-body } while ( boolean expression ); int ndx=0; int totVal = 0; do { totVal += r[ndx]; ndx += 1; }while (ndx <= 6); 34
  • 35. C# хэлний үйлдлүүд Синтакс: Жишээ: for ( [initialization]; [termination condition]; [iteration] ) int[] r = {80, 88, 90, 72, 68, 94, 83}; { for (int ndx = 0; ndx <= 6; ndx++) { for-body } int totVal = 0; totVal += r[ndx]; } 35
  • 36. C# хэлний үйлдлүүд Синтакс: Жишээ: foreach ( type identifier in collection ) { body } int totVal = 0; foreach (int arrayVal in r) { totVal += arrayVal; } 36
  • 37. C# хэлний үйлдлүүд Синтакс: break continue goto identifier; goto case exp; goto default; return [expression] ; 37