Jak możemy generować gettery i settery w Visual Studio?
Przez "generate" mam na myśli automatyczne generowanie kodu niezbędnego dla danej wybranej(zestawu) zmiennej (zmiennych).
Ale wszelkie bardziej jednoznaczne wyjaśnienia lub komentarze na temat dobrych praktyk są mile widziane.
16 answers
Zamiast używać Ctrl + K, X Możesz również po prostu wpisać prop
, a następnie dwukrotnie nacisnąć Tab.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-12-09 18:02:25
Visual Studio ma również funkcję, która wygeneruje właściwość ze zmiennej prywatnej.
Jeśli klikniesz prawym przyciskiem myszy na zmiennej, w menu kontekstowym, które się pojawi, Kliknij pozycję "Refactor" , a następnie wybierz Enkapsulate Field.... Spowoduje to utworzenie właściwości getter / setter dla zmiennej.
Nie jestem zbyt wielkim fanem tej techniki, ponieważ jest to trochę niewygodne w użyciu, jeśli musisz stworzyć wiele getterów/setterów, a to stawia właściwość bezpośrednio poniżej prywatne pole, które mnie wkurza, ponieważ zazwyczaj wszystkie moje prywatne pola są zgrupowane razem, a ta funkcja Visual Studio łamie formatowanie mojej klasy.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-12-09 20:21:57
Używam Visual Studio 2013 Professional.
- Umieść kursor w linii zmiennej instancji.
- Naciśnij klawisze połącz Ctrl + R, Ctrl + E , lub kliknij prawym przyciskiem myszy. Wybierz Menu kontekstowe Refactor → Enkapsulować pole..., a następnie naciśnij OK .
- W Podgląd zmian referencji-okno dialogowe Enkapsulate, naciśnij przycisk Zastosuj .
- to jest wynik:
można również umieścić kursor do wyboru właściwości . Użyj menu edycja → Refaktor → Enkapsulować pole...
-
Inne informacje:
Od C # 3.0 (19 listopada 2007), możemy używać auto-zaimplementowanych właściwości (jest to tylko składnia cukier ).
I
private int productID; public int ProductID { get { return productID; } set { productID = value; } }
Staje się
public int ProductID { get; set; }
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-12-09 20:29:25
Przez generowanie, masz na myśli automatyczne generowanie? Jeśli nie o to ci chodzi:
Visual Studio 2008 ma do tego najłatwiejszą implementację:
public PropertyType PropertyName { get; set; }
W tle tworzy to domyślną zmienną instancji, do której jest przechowywana i pobierana twoja właściwość.
Jednak jeśli chcesz umieścić więcej logiki we właściwościach, musisz mieć zmienną instancji dla niej:
private PropertyType _property;
public PropertyType PropertyName
{
get
{
//logic here
return _property;
}
set
{
//logic here
_property = value;
}
}
Poprzednie wersje Visual Studio zawsze stosowały tę metodę.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-08-06 02:31:37
Możesz również użyć "propfull" i nacisnąć TAB dwa razy.
Zostanie wygenerowana zmienna i właściwość z get I set.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-12-09 19:59:26
Jeśli używasz Visual Studio 2005 i nowszych, możesz szybko utworzyć setter/getter za pomocą polecenia insert snippet.
Kliknij prawym przyciskiem myszy kod, Kliknij Wstaw fragment (Ctrl+K,X ), a następnie wybierz "prop" z listy.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-12-09 18:07:56
Jeśli używasz ReSharper, przejdź do menu ReSharper → kod → / align = "left" / ..
(lub hit Alt + Ins wewnątrz otaczającej klasy), a otrzymasz wszystkie opcje generowania getterów i / lub setterów, które możesz wymyślić: -)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-12-09 19:49:59
W programie visual studio 2019 wybierz swoje właściwości w następujący sposób:
Następnie naciśnij Ctrl+r
Następnie naciśnij Ctrl+e
Pojawi się okno dialogowe z podglądem zmian, które zostaną wprowadzone do kodu. Jeśli wszystko wygląda dobrze (co najczęściej będzie), naciśnij OK
.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-12-25 23:38:43
Użyj słowa kluczowego propfull
.
Wygeneruje właściwość i zmienną.
Wpisz słowo kluczowe propfull
w edytorze, a następnie dwie zakładki s. wygeneruje kod w postaci:
private data_type var_name;
public data_type var_name1{ get;set;}
Film demonstrujący użycie fragmentu "propfull" (między innymi), w 4 min 11 sek.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-12-09 20:05:34
Stworzyłem własny fragment, który tylko dodaje {get; set;}
. Zrobiłem to tylko dlatego, że znalazłem prop
→ Tab to be clunky.
<?xml version="1.0" encoding="utf-8"?>
<CodeSnippets
xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">
<CodeSnippet Format="1.0.0">
<Header>
<Title>get set</Title>
<Shortcut>get</Shortcut>
</Header>
<Snippet>
<Code Language="CSharp">
<![CDATA[{get; set;}]]>
</Code>
</Snippet>
</CodeSnippet>
</CodeSnippets>
Tym, wpisujesz swój PropType i PropName ręcznie, a następnie wpisujesz get
→ Tab , i doda get set. To nic magicznego, ale ponieważ i tak mam tendencję do wpisywania modyfikatora dostępu, równie dobrze mogę dokończyć nazwę i wpisać.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-12-09 20:15:34
W Visual Studio Community Edition 2015 możesz wybrać wszystkie pola, które chcesz, a następnie nacisnąć Ctrl + . aby automatycznie wygenerować właściwości.
Musisz wybrać, czy chcesz użyć właściwości zamiast pola, czy nie.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-12-09 20:33:27
Oprócz fragmentu 'prop' i auto-właściwości, istnieje opcja refactor pozwalająca wybrać istniejące pole i wyeksponować je za pomocą właściwości (Kliknij prawym przyciskiem myszy na polu → Refactor → Enkapsulować pole...).
Ponadto, jeśli nie podoba Ci się implementacja 'prop', możesz tworzyć własne urywki. Dodatkowo narzędzie do refaktoryzacji innych firm, takie jak ReSharper , zapewni Ci jeszcze więcej funkcji i ułatwi tworzenie bardziej zaawansowanych fragmentów. Polecam ReSharper, jeśli cię na to stać.
Http://msdn.microsoft.com/en-us/library/f7d3wz0k (VS.80). aspx
Film demonstrujący użycie fragmentu "prop" (między innymi), w 3 min 23 sek.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-12-09 20:19:51
Nie mam już zainstalowanego Visual Studio na moim komputerze (i używam Linuksa), ale pamiętam, że gdzieś w jednym z menu ukryty był kreator, który dawał dostęp do konstruktora klas.
Za pomocą tego kreatora możesz zdefiniować wszystkie szczegóły klas, w tym metody i atrybuty. O ile dobrze pamiętam, istniała opcja, dzięki której można było poprosić Visual Studio o automatyczne tworzenie setterów i getterów.
Wiem, że to dość niejasne, ale sprawdź to, a może znajdziesz.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-12-09 18:05:15
W imieniu narzędzia Visual Studio możemy łatwo wygenerować C# properties za pomocą narzędzia online o nazwie C # properties generator.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-12-09 20:35:14
Najpierw pobierz rozszerzenie po prostu naciśnij (Ctrl + Shift + X ) i zainstalować getter setter ....
Następnie Wybierz zmienną i kliknij prawym przyciskiem myszy. Przejdź do palety poleceń...
I wpisz getter ... Zasugeruje generowanie metod get I set. Kliknij na to...
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-12-09 20:49:25
Wystarczy nacisnąć Alt + Ins W Android Studio.
Po zadeklarowaniu zmiennych, otrzymasz gettery i settery w wygenerowanym kodzie.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-12-09 20:37:02