Свойства в С# состоят из объявления поля и методов-аксессоров для работы с этим полем.
Эти методы-аксессоры называются получатель (get) и установщик (set).
Например, простейшее свойство y, работающее с полем m, можно представить следующим образом:
private int m=35;
public int y
{
get
{
return m;
}
set
{
m=value;
}
}
Свойство, определяется, так же как и поле, но после имени свойства идет блок кода, включающий в себя два метода get и set. Код этих методов может быть сколь угодно сложным, но в нашем случае это всего лишь один оператор. Аксессор get всегда возвращает значение того типа, который указан в определении свойства. Аксессор set всегда принимает в качестве параметра переменную value, которая передается ему неявно. Один из аксессоров может быть опущен, в этом случае мы получаем поле только для чтения или только для записи.
Обращение к свойству осуществляется точно так же как и к полю.
Пример 2.
using System;
namespace ConsoleApplication2
{
class CStatic
{
private int m=35;
public int y
{
get
{
return m;
}
set
{
m=value;
}
}
}
class Program
{
|
|
static void Main(string[] args)
{
CStatic p=new CStatic();//создается экземпляр класса
Console.WriteLine("{0}",p.y);
p.y=75;
int z = p.y;
Console.WriteLine("{0}",z);
}
}
}
Введите текст программы из примера 2, скомпилируйте и проанализируйте работу приложения.
Индексаторы
Индексаторы позволяют приложению обращаться с объектом класса так, как будто он является массивом. Индексатор во многом напоминает свойство, но в отличие от свойства он принимает в качестве параметра индекс массива. Так как объект класса используется как массив, то в качестве имени класса используется ключевое слово this.
Пример 3.
using System;
namespace ConsoleApplication3
{
class Rmas
{
protected float[] msf=new float[10];
public float this[int j]
{
get
{
return msf[j];
}
set
{
msf[j]=value;
}
}
}
class Program
{
static void Main(string[] args)
{
Rmas obj = new Rmas();
for(int i=0; i<10;i++)
{
obj[i] = (float)1.5*i;
}
for(int i=0; i<10;i++)
{
Console.WriteLine("{0}",obj[i]);
}
}
}
}
Введите текст программы из примера 3, скомпилируйте и проанализируйте работу приложения.
2. Практическая часть