Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Индексаторы с#

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки

Открыть новую тему     Написать ответ в эту тему

Vladimirll

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Программа  рабочая.  Как , что  работает    разобрался.  
 Осталась   строка :  example[-1, i] += example[i, -1];      
Не пойму   как  в  строке  складываются    элементы   и    как   эта  строка   влияет   на  программу  ?    
 
 
using System;
 
namespace ConsoleApplication1
{
 
    class Program
    {
 
        public class B
        {
 
            private int[] myar = { 1, 2, 3, 4 };
 
            private int[] notmyar = { 5, 6, 7, 8 };
 
            public int this[int index1, int index2]
            {
 
                get
                {
 
                    if (index1 == -1) { return notmyar[index2]; }
 
                    else if (index2 == -1) { return myar[index1]; }
 
                    else { return myar[index1] + notmyar[index2]; }
 
                }
 
                set
                {
 
                    if (index1 == -1) { notmyar[index2] = value; }
 
                    else if (index2 == -1) { myar[index1] = value; }
 
                }
 
            }
 
        }
 
 
 
 
 
        static void Main(string[] args)
        {
 
 
            B example = new B();
 
            for (int i = 0; i < 4; i++)
            {
 
                Console.Write(example[i, -1] + " ");
 
                example[-1, i] += example[i, -1];
 
            }
 
            Console.WriteLine();
 
             
 
 
            for (int i = 0; i < 4; i++)
 
            { Console.Write(example[-1, i] + " "); }
 
            Console.WriteLine();
 
 
            for (int i = 0; i < 4; i++)
 
            { Console.Write(example[i, i] + " "); }
 
            Console.ReadLine();
 
        }
 
    }
 
}

Всего записей: 66 | Зарегистр. 07-07-2015 | Отправлено: 21:33 27-09-2015
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Vladimirll

Цитата:
               get  
                {  
 
                    if (index1 == -1) { return notmyar[index2]; }  
 
                    else if (index2 == -1) { return myar[index1]; }  
 
                    else { return myar[index1] + notmyar[index2]; }  
 
                }  
 
                set  
                {  
 
                    if (index1 == -1) { notmyar[index2] = value; }  
 
                    else if (index2 == -1) { myar[index1] = value; }  
 
                }  

очевидно же..

Код:
example[-1, i] += example[i, -1];

соответствует  

Код:
example[-1, i] = example[-1, i] + example[i, -1];

или

Код:
notmyar[i] = notmyar[i] + myar[i];

Всего записей: 15114 | Зарегистр. 20-09-2014 | Отправлено: 21:47 27-09-2015 | Исправлено: Mavrikii, 21:48 27-09-2015
Vladimirll

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii
            Спасибо  !     Непривычно   когда  такого  рода   запись.
   А  откуда   такое   правило   :  
 
 example[-1, i]  как  lvalue (т.е. слева) вызывает set ->   ,
 example[i, -1] как rvalue вызывает get ->    
               
Или   как  это  понимать ,   откуда   это ?    Для   понимания   этого   момента   можете   уточнить  ,   пожалуйста .   Первый   раз   такое   встречаю.

Всего записей: 66 | Зарегистр. 07-07-2015 | Отправлено: 12:56 28-09-2015
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Vladimirll

Цитата:
как  это  понимать ,   откуда   это  

эм.. если вы присваиваете чем то, то, очевидно, это get, а если берете значение, то get.
то, что слева - чем присваиваете, а справа - то, с чем оперируете, берете значения.

Всего записей: 15114 | Зарегистр. 20-09-2014 | Отправлено: 19:56 28-09-2015
Открыть новую тему     Написать ответ в эту тему

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Индексаторы с#


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru