在C#中,冒号是什么类别? :"陷入其中,它究竟意味着什么?

时间:2013-06-10 23:36:28

标签: c#

我一直在尝试在Microsoft Developer网站上获取有关以下功能的参考:真的是但我找不到它,因为它似乎既不是关键字也不是运算符,所以冒号的功能是什么C#?另外我已经看到它被应用于一个方法该如何起作用?。

1 个答案:

答案 0 :(得分:57)

冒号在十几个根本不同的地方使用(我可以在评论中的每个人的帮助下想到):

  • 将类名与类定义中的基类/接口实现分开

    public class Foo : Bar { }
    
  • 在泛型类或方法上指定泛型类型约束

    public class Foo<T> where T : Bar { }
    
    public void Foo<T>() where T : Bar { }
    
  • 指示如何在当前类或当前构造函数之前的基类构造函数上调用另一个构造函数

    public Foo() : base() { }
    
    public Foo(int bar) : this() { }
    
  • 指定全局命名空间(如 C.Lang 指出,这是namespace alias qualifier

    global::System.Console
    
  • 指定属性目标

    [assembly: AssemblyVersion("1.0.0.0")]
    
  • 指定参数名称

    Console.WriteLine(value: "Foo");
    
  • 作为三元表达的一部分

    var result = foo ? bar : baz;
    
  • 作为casegoto标签

    的一部分
    switch(foo) { case bar: break; }
    
    goto Bar;
    Foo: return true;
    Bar: return false;
    
  • 从C#6开始,用于格式化插值字符串

    Console.WriteLine($"{DateTime.Now:yyyyMMdd}");
    
  • 从C#7开始,在元组元素名称中

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

在所有这些情况下,冒号不用作运算符或关键字(::除外)。它属于简单的句法符号类别,如[]{}。它们只是让编译器确切地知道它们周围的其他符号是什么意思。