Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.82/34: Рейтинг темы: голосов - 34, средняя оценка - 4.82
Andryushchenko
0 / 0 / 0
Регистрация: 11.08.2010
Сообщений: 29
1

Индексаторы

13.08.2010, 11:58. Просмотров 6902. Ответов 6
Метки нет (Все метки)

Завдання
Клас інкапсулює одновимірний масив з елементів цілого типу. Створити індексатор, що запобігає порушенню границі масиву. Створити властивість, доступну для читання закритого елементу-даного, що контролює доступ до змінної довжини масиву

перевод Класс инкапсулирует одновымерный массив с елементов целого типа. Создать индексатор, который мешает границе массива. Создать способность, доступа для чтения закрытава елемента- даного, который контролирует доступ к пременой длине массива.
P.S. перевод мой коряв прошу без критики сам знаю:Д но как могу так перевожу в школе русский не преподавали

Суть в том что я даже не знаю что тут делать и как начинать... подскажыте пожалусто ...
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.08.2010, 11:58
Ответы с готовыми решениями:

Индексаторы в С#
Помогите реализовать задачу. Задача звучит так: Класс инкапсулирует одномерный массив с элементов...

Индексаторы
Добрый день. Имеется код struct Cell { Rectangle location; public...

Индексаторы и перегрузка
Напишите, пожалуйста, как использовать перегрузки из класса в основной программе using System;...

Индексаторы и свойства
Немного не могу понять для чего нужны индексаторы и свойства. Необходимо выполнить такое задание: ...

Классы и индексаторы
Помогите с лабораторной c#, пожалуйста... Общая постановка задачи Класс А предназначен для...

6
lifestyle
Mobile Developer
235 / 231 / 18
Регистрация: 10.05.2009
Сообщений: 917
13.08.2010, 12:12 2
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
private int [] array=new int[5];//global variable in the class
 
public int this[int index]//indexer define it like a simple method of YourClassName
{
    get
    {
          return array[index];
    }
    set
    {
           if(index<array.Length)
           {
                array[index]=value;
           }
           else  throw new Exception("Your index is bigger then Length of array");
    }
}
Indexer это тот же Property (getter\setter) ,а если еще проще это такой же самый метод как и все отсальные только вместо ( ) таких скобок где вводятся аргументы используются [ ] такие скобки.Этот метод позволяет Обращаться к массиву как YourClassName[index] таким образом происходит обращение к массиву не смотря нато что его access modifier private при помощи property под названием Indexer.
UPD
вот по теме почитай ссылка
0
Andryushchenko
0 / 0 / 0
Регистрация: 11.08.2010
Сообщений: 29
13.08.2010, 12:22  [ТС] 3
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
public class IndexClass
{
    private int[] innerArray = new int[10];
    public int this[int Index]
    {
        get
        {
            if ((Index < 0) || (Index > 10))
                throw new ArgumentOutOfRangeException();
 
            return innerArray[Index];
        }
        set
        {
            if ((Index < 0) || (Index > 10))
                throw new ArgumentOutOfRangeException();
 
            innerArray[Index] = value;
        }
    }
}
 
public class AppMain
{
    public static void Main()
    {
        IndexClass sample = new IndexClass();
        sample[0] = 1;
        Console.WriteLine(sample[0]);
    }
}
Воть попробывал чтото щас написать по твоиму примеру посмотри правельно ? у мну работает токо я не знаю как вывести на екран то что получаетса и вобще что я нахимичил тоже не особо понимаю :Д Если не трудно обясни как имено работает Get Set зарание спасибо
0
lifestyle
Mobile Developer
235 / 231 / 18
Регистрация: 10.05.2009
Сообщений: 917
13.08.2010, 12:37 4
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
get
        {
            if ((Index < 0) || (Index > 10))
                throw new ArgumentOutOfRangeException();
 
             else return innerArray[Index];//Лучше добавить else
        }
        set
        {
            if ((Index < 0) || (Index > 10))
                throw new ArgumentOutOfRangeException();
 
            else innerArray[Index] = value;//Лучше добавить else
        }
 
 
// но я бы напсиал так:
        get
        {
            if ((Index >0) && (Index < 10))
                return innerArray[Index];
            else  throw new ArgumentOutOfRangeException();
        }
        set
        {
            if ((Index >0) && (Index < 10))
               innerArray[Index] = value;
            else throw new ArgumentOutOfRangeException();
        }
Что у тебя не получается вывести на экран????
что хначит как работает гет и сет?)))гет возвращает тебе что то а сет устанавливает значение)
value в set'e это аргумент который ты передаешь для установки в массив например короче просто аргумент который получает функция сет. Да и вообще гет и сет это уже встроенные функции в VS ты из и сам можешь нписать)
1
Andryushchenko
0 / 0 / 0
Регистрация: 11.08.2010
Сообщений: 29
13.08.2010, 13:01  [ТС] 5
такс ну смотри
C#
1
2
3
4
5
6
7
8
9
public class AppMain
{
    public static void Main()
    {
        IndexClass sample = new IndexClass();
        sample[0] = 1;
        Console.WriteLine(sample[0]);
    }
}
тут я хочу вывести и посмотреть как работает ети самые индексы но у мну екран мелькал и я не успевал посмотреть но ща мну осенило дописать Console.ReadLine(); ^_^
ну я суть то уловил что такое гет и сет но лутше спросить у человека который понимает и перестаховатса)

Добавлено через 14 минут
слуш у мну тут есть ещо вопрос по поводу основного и праизводного класса мне можно тут прям писать ?
0
lifestyle
Mobile Developer
235 / 231 / 18
Регистрация: 10.05.2009
Сообщений: 917
13.08.2010, 13:03 6
Цитата Сообщение от Andryushchenko Посмотреть сообщение
такс ну смотри
public class AppMain
{
public static void Main()
{
IndexClass sample = new IndexClass();
sample[0] = 1;
Console.WriteLine(sample[0]);
}
}
тут я хочу вывести и посмотреть как работает ети самые индексы но у мну екран мелькал и я не успевал посмотреть но ща мну осенило дописать Console.ReadLine(); ^_^
ну я суть то уловил что такое гет и сет но лутше спросить у человека который понимает и перестаховатса)

Добавлено через 14 минут
слуш у мну тут есть ещо вопрос по поводу основного и праизводного класса мне можно тут прям писать ?
Видишь , можешь когда хочешь))))
лучше создай тему новую мошт кому принодится
0
cibergod
7 / 7 / 0
Регистрация: 23.08.2010
Сообщений: 24
03.12.2010, 19:00 7
Вот реализация твоей фуннкции
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
  public int[] s = new int[10];
        //пример 1 поиск индеса в масиве
       static int Serch_Index (int[] My_Arrey, int MyIndex) 
       {
           int I_=-1;
           foreach (int s in My_Arrey) if (s == MyIndex) I_=s;
           return I_; //если индекс найден то выводим его если такого индекса нет то просто выводим -1 и понимаем что поиск неудачен
       }
 
       //пример 2 поиск значения в масиве с определнным индексом
       static int Serch_Index(int[] My_Arrey, int MyIndex)
       {
 
           int I_ = -1, I = 0;
 
           foreach (int s in My_Arrey) 
           {
               if (I == MyIndex) I_ = I; //если индек нашли то запомнаем его
               I++;
           }
           return I_; //если индекс найден то выводим его если такого индекса нет то просто выводим -1 и понимаем что поиск неудачен
       }
0
03.12.2010, 19:00
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.12.2010, 19:00

Индексаторы, свойства
есть string ms внутриего лежат слова 1) есть сво-во Site - возврощет размер массива 2)...

Индексаторы. Динамический массив
Не хочет присваивать значения. Строка вывода возвращает ноли. using System; using...

Классы, объекты, индексаторы
Помогите, пожалуйста, решить задачу. Объявить класс, содержащий одномерный целочисленный массив...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru