[cs] odwoływanie się do elementów obiektu jak do tablicy

0

Witam, mam taki (banalny) problem:

posiadam klasę 'MojaKlasa', tworzę obiekt 'obiekt':

MojaKlasa obiekt = new MojaKlasa();

i chciałbym się teraz odwoływać do pewnych elementów tej klasy w taki sposób:

obiekt[10,45] = 123;

zamiast tak:

obiekt.tablica[10,45] = 123;

Druga część mojego pytania, to czy jest możliwe, żeby podczas przypisania/odczytania wartości jakiemuś parametrowi została wywołana jakaś funkcja, w delphi wyglądałoby to tak:

property cos: integer read jakasFunkcja;

Nie wiem nawet pod jakim hasłem w googlach tego szukać, a w posiadanej przeze mnie książce nie znalazłem odpowiedzi na to pytanie. Z góry dziękuję za wszystkie odpowiedzi.

0

W C# możesz ustawić właściwość o nazwie this:

class Test
{
   // właściwości działają prawie jak funkcje, przekazujesz im parametr, a coś zwracają
   // z tą różnicą, że może być tylko jeden przekazywany parametr, jego wartość zawiera się w "zmiennej" value
   int this[int x] {
     get { return 1; }
     set { zmienna = value; } // <- tutaj, za pomocą value możesz np. przypisać wartość do jakiejś zmiennej prywatnej
   }
   
   // Twój przykład z zapisywaniem i odczytywaniem wartości do pewnej tablicy:
   double this[int x, int y] {
     get { return tablica[x, y]; } 
     set { tablica[x, y] = value; }
   }
   
   string this[string key] ... itd. itp.

}

Jak widzisz, składnia jest prosta przejrzysta, żadnych operatorów jak w C++ :) Użycie:

Test xyz = new Test();
xyz["blabla"] = "blablabla";
xyz[1, 2] = 1.2; 
xyz[3] = 4;

Poszukaj jeszcze w google: c# właściwości albo c# properties, źródeł wiedzy jest sporo, nie warto się tu więcej rozpisywać :)

0
aaasss napisał(a)

Druga część mojego pytania, to czy jest możliwe, żeby podczas przypisania/odczytania wartości jakiemuś parametrowi została wywołana jakaś funkcja, w delphi wyglądałoby to tak:

Zrób właściwość i odpal tę funkcję podczas przypisywania wartości.

1 użytkowników online, w tym zalogowanych: 0, gości: 1