In C# what category does the colon “ : ” fall into, and what does it really mean?

前端 未结 1 1585
孤城傲影
孤城傲影 2020-11-29 23:24

I have been trying to get reference in the Microsoft Developer website about what the function of the : really is but I cant find it because it seems that it is neither a ke

相关标签:
1条回答
  • 2020-11-30 00:08

    Colons are used in a dozen fundamentally different places (that I can think of, with the help of everyone in the comments):

    • Separating a class name from its base class / interface implementations in class definitions

      public class Foo : Bar { }
      
    • Specifying a generic type constraint on a generic class or method

      public class Foo<T> where T : Bar { }
      
      public void Foo<T>() where T : Bar { }
      
    • Indicating how to call another constructor on the current class or a base class's constructor prior to the current constructor

      public Foo() : base() { }
      
      public Foo(int bar) : this() { }
      
    • Specifying the global namespace (as C. Lang points out, this is the namespace alias qualifier)

      global::System.Console
      
    • Specifying attribute targets

      [assembly: AssemblyVersion("1.0.0.0")]
      
    • Specifying parameter names

      Console.WriteLine(value: "Foo");
      
    • As part of a ternary expression

      var result = foo ? bar : baz;
      
    • As part of a case or goto label

      switch(foo) { case bar: break; }
      
      goto Bar;
      Foo: return true;
      Bar: return false;
      
    • Since C# 6, for formatting in interpolated strings

      Console.WriteLine($"{DateTime.Now:yyyyMMdd}");
      
    • Since C# 7, in tuple element names

      var foo = (bar: "a", baz: "b");
      Console.WriteLine(foo.bar);
      

    In all these cases, the colon is not used as an operator or a keyword (with the exception of ::). It falls into the category of simple syntactic symbols, like [] or {}. They are just there to let the compiler know exactly what the other symbols around them mean.

    0 讨论(0)
提交回复
热议问题