Ich habe versucht, Verweis in der Microsoft Developer-Website zu erhalten, was die Funktion der: wirklich ist, aber ich kann es nicht finden, weil es scheint, dass es weder ein Schlüsselwort noch ein Operator ist also die Funktion des Doppelpunkts in C# ? Auch habe ich gesehen, dass es auf eine Methode angewendet wird, wie funktioniert das?In C# in welche Kategorie fällt der Doppelpunkt ":" und was bedeutet das wirklich?
Antwort
Colons sind in sieben grundsätzlich verschiedenen Orten verwendet (das ich sich vorstellen kann, mit Hilfe von jedem in den Kommentaren):
einen Klassennamen von seiner Basisklasse/Interface-Implementierungen in Klassendefinitionen Trennung oder in generische Einschränkung Definitionen
public class Foo : Bar { } public class Foo<T> where T : Bar { } public void Foo<T>() where T : Bar { }
angibt, wie auf der aktuellen Klasse einen anderen Konstruktor aufzurufen oder ein Konstruktor der Basisklasse vor dem aktuellen Konstruktor
public Foo() : base() { } public Foo(int bar) : this() { }
den globalen Namensraum angeben (als C. Lang weist darauf hin, das ist die namespace alias qualifier)
global::System.Console
Angeben Attribut Ziele
[assembly: AssemblyVersion("1.0.0.0")]
Angeben von Parameternamen
Console.WriteLine(value: "Foo");
Als Teil eines ternären Ausdruck
var result = foo ? bar : baz;
Als Teil eines
case
odergoto
Etikettswitch(foo) { case bar: break; } goto Bar; Foo: return true; Bar: return false;
Da C# 6 für
in interpolierten strings Formatierungs
In allen diesen Fällen wird der Doppelpunkt nicht als Operator oder Schlüsselwort verwendet (mit Ausnahme von ::
). Es fällt in die Kategorie der einfachen syntaktischen Symbole, wie []
oder {}
. Sie sind nur da, um den Compiler genau wissen zu lassen, was die anderen Symbole um sie herum bedeuten.
+1 Auch bei der Angabe von 'where T: IEnumerable' (Typ Constraint Specifier) –
Wie Kirk Woll in den Kommentaren oben vorgestellt - vergessen Sie nicht den Ternary-Operator (x == true?" Yes ":" no "); – barrypicker
Und die 'case Something:' Anweisung –
Die Antwort von ps.sw.g ist ziemlich genau das, was ich vorhatte (ließ meinen Entwurf fallen, als ich seinen Posten sah), und es sollte die akzeptierte Antwort sein.
Aber ich stimme nicht zu, dass generische Art Einschränkung ist die gleiche Verwendung von :
als Vererbung angeben.
Hier ist ein Beispiel:
public MyClass<T> : IMyClass where T : IEnumerable
{
public DoSomething<TT>(TT foo) where TT : INotifyPropertyChanged
{
// ...
}
}
Die :
zwischen MyClass<T>
und IMyClass
gibt Vererbung. Die :
zwischen where T
und IEnumerable
gibt eine Typbeschränkung an. Typabhängigkeiten können auf Methoden angewendet werden, nicht auf Vererbung. Die beiden Konzepte haben nichts gemeinsam.
@pswg nette antwort, prost!
+1 Ich werde definitiv zustimmen, dass Vererbung/Interface-Implementierung und generische Typ-Constraint völlig unterschiedliche Konzepte sind (auch wenn sie oberflächlich ähnlich aussehen). –
Was bedeutet Typenzwang? ist es wie in welcher Reihenfolge zum Beispiel der Konstruktor aufgerufen wird? oder etwas unter diesen Linien? – Alan
Generische Typen, wie zum Beispiel 'Nullable
- 1. Was bedeutet Doppelpunkt in XSLT?
- 2. Was bedeutet der Doppelpunkt Strich ": -" in Bash
- 3. Was bedeutet der Doppelpunkt hier?
- 4. Was bedeutet Doppelpunkt in Perl?
- 5. Was bedeutet der Doppelpunkt in Java?
- 6. Was bedeutet ".. ::." in C#?
- 7. In C, was bedeutet ein Doppelpunkt in einer Deklaration?
- 8. Was bedeutet Schrägstrich "\" wirklich?
- 9. Was bedeutet "Plus-Doppelpunkt" ("+:") in Shell-Skriptausdrücken?
- 10. Was bedeutet :: Doppelpunkt in DOS Batch-Dateien?
- 11. Was bedeutet der folgende Doppelpunkt (:) in der MATLAB-Syntax?
- 12. Was bedeutet :: (doppelter Doppelpunkt) in Ruby?
- 13. Was bedeutet "[das]" in C++ bedeutet
- 14. Was bedeutet das & Symbol in Objective-C?
- 15. Was bedeutet "äußerlich =>" wirklich?
- 16. Was bedeutet der Doppelpunkt ('::') in Actionscript 3/Flex?
- 17. Was bedeutet das - C#
- 18. Was bedeutet Größe wirklich in geom_point?
- 19. Was macht der Doppelpunkt in dieser Strukturdefinition?
- 20. Was bedeutet "malloc_trim (0)" wirklich?
- 21. Was genau bedeutet das in C#?
- 22. Was bedeutet [&] bedeutet in C++
- 23. Was bedeutet das? meinst du in C#?
- 24. Was bedeutet das * in einer C++ - Methodensignatur?
- 25. Was bedeutet das Symbol^in Objective-C?
- 26. Was bedeutet das Zeichen^in C++ - Deklarationen?
- 27. Was bedeutet das Zeichenfolgenformat% 80 [^,] in C?
- 28. Was macht der Doppelpunkt in PATH
- 29. Was bedeutet/*! */In C#?
- 30. Was bedeutet/** in C++
Es ist ein Zeichen, das ein Teil von Ausdrücken/Anweisungen ist, einschließlich des ternären Operators und der case-Anweisung. Um was genau bitten Sie? –
Mögliches Duplikat davon? http://stackoverflow.com/questions/338398/thisfoo-syntax-in-c-sharp-constructors –
Nicht doppelt. Das war die Frage über die Erweiterung von Konstruktoren nicht den Zweck von ':' – FabianCook