Próbuję uzyskać odniesienie na stronie Microsoft Developer o tym, co funkcja: naprawdę jest, ale nie mogę go znaleźć, ponieważ wydaje się, że nie jest to słowo kluczowe lub operator, więc co jest funkcją dwukropka w C# ? Również widziałem, jak stosuje się do metody, jak to działa ?.W języku C#, w jakiej kategorii pojawia się dwukropek ":" i co to naprawdę oznacza?
Odpowiedz
Dwukropki wykorzystywane są w siedmiu fundamentalnie różnych miejscach (które można myślę, z pomocą wszystkich w komentarzach):
oddzielających nazwę klasy z podstawy implementacji klasy/interfejsu w definicji klas lub w ogólnych ograniczeń definicje
public class Foo : Bar { } public class Foo<T> where T : Bar { } public void Foo<T>() where T : Bar { }
Wskazanie jak zadzwonić innego konstruktora na bieżącej klasy lub konstruktora klasy bazowej przed bieżącym konstruktora
public Foo() : base() { } public Foo(int bar) : this() { }
Określanie globalnej przestrzeni nazw (jak C. Lang zwraca uwagę, jest to namespace alias qualifier) atrybut
global::System.Console
Określanie skierowany
[assembly: AssemblyVersion("1.0.0.0")]
Określanie nazwy parametrów
Console.WriteLine(value: "Foo");
W ramach trójskładnikowej ekspresji
var result = foo ? bar : baz;
W ramach
case
lubgoto
etykietyswitch(foo) { case bar: break; } goto Bar; Foo: return true; Bar: return false;
ponieważ C# 6 dla formatowania interpolowanych łańcuchów
We wszystkich tych przypadkach dwukropek nie jest używany jako operator lub słowo kluczowe (z wyjątkiem ::
). Należy do kategorii prostych symboli składniowych, takich jak []
lub . Są po to, aby kompilator wiedział dokładnie, co oznaczają inne symbole wokół nich.
+1 Także przy określaniu 'where T: IEnumerable' (typ ograniczenia ograniczeń) –
Podobnie jak Kirk Woll przedstawione w komentarzach powyżej - nie zapomnij o operator Ternary (x == true?" Yes ":" no "); – barrypicker
I 'case Something:' statement –
Odpowiedź od p.s.w.g jest prawie tym, co miałem zamiar wymyślić (upuścił moją wersję roboczą, gdy zobaczyłem jego post), i powinna to być zaakceptowana odpowiedź.
Ale nie zgadzam się, że ograniczenie rodzaju ogólnego jest tym samym użytkowaniem, co :
jako określanie dziedziczenia.
Oto przykład:
public MyClass<T> : IMyClass where T : IEnumerable
{
public DoSomething<TT>(TT foo) where TT : INotifyPropertyChanged
{
// ...
}
}
:
między MyClass<T>
i IMyClass
określa dziedziczenie. Parametr :
między where T
i określa ograniczenie typu. Ograniczenia typu można stosować do metod, a nie dziedziczenia. Te dwa pojęcia nie mają ze sobą nic wspólnego.
@pswg fajna odpowiedź, okrzyki!
+1 Zdecydowanie się zgodzę, że implementacja dziedziczenia/interfejsu i ograniczenie typu generycznego są zupełnie różnymi koncepcjami (nawet jeśli wyglądają podobnie powierzchownie). –
Co oznacza ograniczenie typu? czy to tak, w jakiej kolejności nazywany jest na przykład konstruktor? czy coś w tym stylu? – Alan
Typy ogólne, takie jak 'Nullable
- 1. Co oznacza "[to]" oznacza w języku C++
- 2. W języku C, co oznacza dwukropek w deklaracji?
- 3. ":" (dwukropek) w strukturze C - co to znaczy?
- 4. Co oznacza dwukropek w Javie?
- 5. Co oznacza dwukropek (:) w JavaScript?
- 6. Co oznacza dwukropek w Perlu?
- 7. Co to jest ".. ::." w języku C#?
- 8. Co oznacza: * w C++?
- 9. Co to jest "return x? : 1 "oznacza w języku C?
- 10. Co naprawdę oznacza nibNameOrNil?
- 11. co to ... (trzy kropki) oznacza w języku C++
- 12. Co oznacza "SKU" (atrybut) w języku C#?
- 13. co globalny :: oznacza w języku C#
- 14. Co oznacza termin "leksykalny" w języku C++?
- 15. Co oznacza 0u w języku C#?
- 16. Co oznacza drugi dwukropek w "Liście: D:" w Perlu 6?
- 17. co onEndReachedThreshold naprawdę oznacza w reagują-rodzimy
- 18. Co naprawdę oznacza "malloc_trim (0)"?
- 19. Co to jest "" w JavaScript naprawdę?
- 20. W języku Mathematica, co oznacza @@@?
- 21. Co naprawdę oznacza parametr AspNetCompatibilityRequirements?
- 22. Co oznacza to stwierdzenie C?
- 23. w języku Java co oznacza symbol @?
- 24. Co oznacza wyrażenie "plus dwukropek" ("+:") w wyrażeniach skryptu powłoki?
- 25. Co to jest void * w języku C#?
- 26. Co oznacza dwukropek przed literałem w instrukcji SQL?
- 27. Co to oznacza w prologu?
- 28. Pytanie dotyczące składni PHP: Co oznacza znak zapytania i dwukropek?
- 29. Co oznacza :: (podwójny dwukropek) w plikach wsadowych DOS?
- 30. Co oznacza znak zapytania i dwukropek (?: Operator trójskładnikowy) w celu-c?
Jest to postać, która jest częścią wyrażeń/zdań, w tym operatora potrójnego i instrukcji case. O co konkretnie pytasz? –
Możliwy duplikat tego? http://stackoverflow.com/questions/338398/thisfoo-syntax-in-c-sharp-constructors –
Nie duplikuj. To było pytanie o rozszerzenie konstruktorów, a nie o celu ':' – FabianCook