Kilka dni temu musiałem przełączyć bool, i skończyło się robi tak:Modyfikuj ValueType z metody rozszerzenia?
IsVisible = !IsVisible;
Okazało się, że będzie to najprostszy sposób archiwizacji że functionaily. Ale zanim zrobiłem jak powyżej przykład, wypróbowałem na kilka różnych sposobów.
Głównie na temat korzystania z metody rozszerzenia. Co w moim opini sprawiłoby, że byłoby jeszcze prostsze, lub przynajmniej mniej znaków do napisania.
IsVisible.toggle();
Ale jako logiczną jest rodzajem wartość, tym bool, który jest wysyłany choć metody wydłużania jest kopią oryginalnego bool, a nie rodzaj odniesienia.
public static void Toggle(this boolean value)
{
value = !value;
}
Który zrobi to, co potrzebne, ale jako logiczną coraz przełączanych jest kopią oryginalnego logiczną isnt zmiana stosowanej do oryginału ..
Próbowałem oddanie ref Infront słowo kluczowe „boolean ", ale to się nie skompilowało. I nadal nie znalazłem powodu, dla którego nie kompilowałem, czy nie byłaby to doskonała funkcjonalność dla metod rozszerzeń?
public static void Toggle(this ref boolean value)
Próbowałem nawet odlewania logiczną do obiektu, który w głowie by uczynić go do typu odniesienia, a potem to już nie być kopią, a zmiana ta przejdzie z powrotem. To też nie działa.
Moje pytanie brzmi, czy możliwe jest wprowadzenie zmian w przedłużeniu, czy w inny sposób, aby uczynić go jeszcze prostszym, niż już jest?
wiem, że to całkiem możliwe, nie będzie żadnych prostszy lub bardziej logiczne niż górna przykład, ale nigdy nie wiadomo :)
Z góry dzięki.
Ułóż to tak proste, jak to możliwe, ale nie prostsze. -Einstein –
btw, metody rozszerzenia muszą być statyczne. Domyślam się, że są w twoim kodzie, po prostu zapomniałeś, żeby były statyczne tutaj – abatishchev
Tak, mój błąd :) – Moulde