Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Дріс 13.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
189.44 Кб
Скачать

Интерфейстерде қасиетті хабарлау мысалы

using System;

interface ISome

{

string Name

{

get;

set;

}

}

class SomeClass : ISome

{

// Өріс

string name;

// Қасиет

virtual public string Name

{

//Оқу функциясы

get

{

return name != null ? name : "Not avaiable";

}

// Жазу функциясы

set

{

name = value;

}

}

}

class SomeClassD : SomeClass

{

// Өріс

string name;

// Қасиет

override public string Name

{

// Оқу функциясы

get

{

return name != null ? name : "Not avaiable yet";

}

// Жазу функциясы

set

{

name = value.ToUpper();

}

}

}

class Test

{

static void Main()

{

ISome i1 = new SomeClass();

ISome i2 = new SomeClassD();

Console.WriteLine("SomeClass: {0}", i1.Name);

Console.WriteLine("SomeClassD: {0}", i2.Name);

i1.Name = "Hello";

i2.Name = "Hello";

Console.WriteLine("SomeClass: {0}", i1.Name);

Console.WriteLine("SomeClassD: {0}", i2.Name);

}

}

*****

Статикалық қасиет

C# толық класқа жататын статикалық қасиетті анықтайды. Статикалық қасиеттер virtual, override немесе abstract модификаторларымен хабарланбайды.

class SomeClass

{

static int count = 0;

static public int Count

{

get

{

return count;

}

}

public SomeClass()

{

++count;

}

}

class Test

{

static void Main()

{

Console.WriteLine("Count = {0}", SomeClass.Count); // 0

SomeClass s = new SomeClass();

Console.WriteLine("Count = {0}", SomeClass.Count); // 1

}

}

***** Қасиет айнымалы емес. Оған функция қасиеттері сияқты ref нгемесе out параметрлерімен беруге болмайды.*****

Индексаторлар

Индексаторлар қасиетке ұқсас, бірақ олардың функцияға қатынасын параметрлер қабылдайды.

Мысал

using System;

using System.Collections;

class SomeClass : IEnumerable // foreach қолдану үшін

{

// Өріс

string [] words;

// Сандық индексатор

public string this [int index]

{

// Оқу функциясы

get

{

if(index < 0 || index >= words.Length)

throw new IndexOutOfRangeException();

return words[index];

}

// Жазу функциясы

set

{

if(index < 0 || index >= words.Length)

throw new IndexOutOfRangeException();

words[index] = value;

}

}

// Жолдық индексатор

public int this [string name]

{

// Оқу функциясы

get

{

// Берілген жолға сәйкес индексті іздеу

return Array.IndexOf(words, name);

}

}

public SomeClass(int n)

{

if(n >= 0)

words = new string[n];

}

// IEnumerable интерфейсін тарату

public IEnumerator GetEnumerator()

{

// Массивтер IEnumerable интерфейсін өздері таратады

return words.GetEnumerator();

}

}

class Test

{

static void Main()

{

SomeClass sc = new SomeClass(3);

// Сандық индексаторды қолдану

sc[0] = "book";

sc[1] = "bird";

sc[2] = "beer";

//Массив мәндерінің толып кетуі

foreach(string s in sc)

{

Console.WriteLine(s);

}

// Жолдық индексаторды қолданамыз

Console.WriteLine(sc["beer"]);

Console.WriteLine(sc["boat"]);

}

}

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]