Czy istnieje jakis zamiennik słowa kluczowego with z Delphi?

0

Witam mam pewna bardzo rozbudowaną strukture i musze do każdego jej elementu przypisać odpowiednia wartość tak więc jak mam np MyStruct.Podstruktura.jeszczecos.zmienna = wartość to musze za każdym razem kopiować i wklejać MyStruct.Podstruktura.jeszczecos w zależności od tego ile zmiennych ma te "jeszcze coś", w delphi czy VB problem jest ładnie rozwiązany dzieki słówkowi kluczowemu with(coprawda zdarza się czasem przez to ze mieszają się nazwy zmiennych ze struktury z tymi z klasy ale to zależy od nazwenictwa)... tak więc czy istnieje w C# jakiś zamiennik with? bo przy bardzo rozbudowanej strukturze to naprwade nie wygląda ciekawie i wydaje mi się takie kopiowanie i wklejanie mało profesjonalne
z góry dziękuję za oświecenie:D

ps. patrzylem using z C# ale to raczej nie to

0

W C# można jeszcze prościej:

MyStruct myStruct = new MyStruct()
{
    MyInt = 5,
    MyString = "cos",
    MyInternalStruct = new MyInternalStruct()
    {
        MyInternalInt = 20
    }
};
0

Kod przykladowy:

obiekt.wlasciwosc.podwlasciwosc1 = 1;
obiekt.wlasciwosc.podwlasciwosc2 = 2;
obiekt.wlasciwosc.podwlasciwosc3 = 3;
obiekt.wlasciwosc.podwlasciwosc4 = 4;

w starszych .NET mozesz zmienic na:

typ wlasciwosc = obiekt.wlasciwosc;
wlasciwosc.podwlasciwosc2 = 2;
wlasciwosc.podwlasciwosc3 = 3;
wlasciwosc.podwlasciwosc4 = 4;

w .NET 3.0 mozesz typ zamienic po prostu slowem kluczowym var.

Jesli natomiast dopiero tworzysz nowy obiekt, mozesz od .NET 3.0 uzyc jawnej inicjalizacji, jak powyzej pokazal Rev.pl:

var wlasciwosc = new obiekt.wlasciwosc()
{
  podwlasciwosc2 = 2,
  podwlasciwosc3 = 3,
  podwlasciwosc4 = 4
}
0

Wielkie dzięki! to jest właśnie to czego szukałem a juz sie bałem ze nie ma w C# takiej mozliwości bo w necie na zagranicznych forach i msdn nie było rozwiązania tylko gorzkie żale że tego nie ma:D

0

cos mi umknęło jednak a co w przypadku kiedy nie chce przypisywać wartości do podwłaściwosci? chce odczytac i przypisac do czegosc innego wartosc danej wlasciwosci? przez słowko kluczowe new zostanie przecież wyczyszczona dana struktura

0

New nie ma nic do struktur - tworzy nowy obiekt i zwraca jego referencje. Tak, nadpisze to zmienna wlasciwosc. Nie, bezposredniego odpowiednika slowka with nie ma, poniewaz tworcy C# stwierdzili, ze nie chca dopuscic do sytuacji, w ktorej o znaczeniu wyrazenia w tym samym bloku kodu decyduje kontekst (wyjatkiem sa namespace'y, poniewaz doklanie takie bylo ich przeznaczenie). Tak byloby na przyklad z sytuacja:

//  kod teoretyczny
int wysokosc = 1;
with (prostokat)
{
  wysokosc = 2; // <-- zmienna czy pole obiektu?
}
0

miałem w delphi kilka razy taką sytuacje tak czy inaczej szkoda jak dla mnie to żaden argument aby takiego with mimo to nie było(można zawsze inaczej nazwać zmienna, a w skrajnych przypadkach po prostu nieużyć with), ktos by nie chciał to by mógł przeciez nieuzywać a tak niemamy po prostu możliwość wyboru co moim zdaniem jako programisty jest złe i patrzac w necie widze duzo osob to denerwuje;/

0
Szczawik napisał(a)

ze nie chca dopuscic do sytuacji, w ktorej o znaczeniu wyrazenia w tym samym bloku kodu decyduje kontekst (wyjatkiem sa namespace'y, poniewaz doklanie takie bylo ich przeznaczenie

to prawda.. i dlatego komiczny jest fakt, ze ponizszy kod jest poprawny:)

    Form Form;
    Form.Name = Form.ActiveForm.Name;  // static vs nonstatic? :)

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