使用(逻辑):运算符C#

使用(逻辑):运算符C#,c#,operators,colon,C#,Operators,Colon,有人能解释一下“:”在代码中代表什么吗。我理解代码,但不知道这个“:”运算符背后的逻辑/条件 public Constructor() : this("No names", string.Empty) { } 冒号在七个根本不同的地方使用(我可以想到,在评论中的每个人的帮助下): 在类定义或泛型约束定义中将类名与其基类/接口实现分离 public class Foo : Bar { } public class Foo<T> where T : Bar { } public

有人能解释一下“:”在代码中代表什么吗。我理解代码,但不知道这个“:”运算符背后的逻辑/条件

public Constructor() : this("No names", string.Empty)
{
}

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

  • 在类定义或泛型约束定义中将类名与其基类/接口实现分离

    public class Foo : Bar { }
    
    public class Foo<T> where T : Bar { }
    
    public void Foo<T>() where T : Bar { }
    
  • 指定全局名称空间(正如C.Lang指出的,这是

  • 指定属性目标

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

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

    var result = foo ? bar : baz;
    
  • 作为
    案例
    转到
    标签的一部分

    switch(foo) { case bar: break; }
    
    goto Bar;
    Foo: return true;
    Bar: return false;
    

在所有这些情况下,冒号不用作运算符或关键字(除了
)。它属于简单语法符号的范畴,如
[]
{}
。它们只是让编译器确切地知道它们周围的其他符号的含义。

在您的例子中,您有一个包含多个构造函数的类,所以

class构造函数()

有一个默认的(无参数)构造函数和一个以2个字符串作为参数的构造函数

如果有人调用默认构造函数,那么类将在内部调用构造函数,并使用两个字符串重载它


这就是代码的解释

谢谢,但我知道解释,但“:”让我困惑。
var result = foo ? bar : baz;
switch(foo) { case bar: break; }

goto Bar;
Foo: return true;
Bar: return false;