使用(逻辑):运算符 C#
Use(logic) of : operator C#
谁能解释一下“:”在代码中代表什么。我理解代码,但不知道这个“:”运算符后面的 logic/condition。
public Constructor() : this("No names", string.Empty)
{
}
冒号在七个根本不同的地方使用(我能想到的,在评论中的每个人的帮助下):
在 class 定义或通用约束定义中将 class 名称与其基础 class / 接口实现分开。
public class Foo : Bar { }
public class Foo<T> where T : Bar { }
public void Foo<T>() where T : Bar { }
指示如何在当前 class 或基础 class 的构造函数上调用当前构造函数之前的另一个构造函数。
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;
作为 case
或 goto
标签的一部分。
switch(foo) { case bar: break; }
goto Bar;
Foo: return true;
Bar: return false;
在所有这些情况下,冒号不用作运算符或关键字(::
除外)。它属于简单语法符号的范畴,如 []
或 {}
。它们的存在只是为了让编译器确切地知道它们周围的其他符号的含义。
在你的例子中,你有一个带有多个构造函数的 class,所以
class Constructor()
有一个默认(无参数)构造函数和一个以 2 个字符串作为参数的构造函数。
如果有人调用默认构造函数,那么 class 将在内部调用带有 2 个重载字符串的构造函数。
这就是那个代码的解释
谁能解释一下“:”在代码中代表什么。我理解代码,但不知道这个“:”运算符后面的 logic/condition。
public Constructor() : this("No names", string.Empty)
{
}
冒号在七个根本不同的地方使用(我能想到的,在评论中的每个人的帮助下):
在 class 定义或通用约束定义中将 class 名称与其基础 class / 接口实现分开。
public class Foo : Bar { } public class Foo<T> where T : Bar { } public void Foo<T>() where T : Bar { }
指示如何在当前 class 或基础 class 的构造函数上调用当前构造函数之前的另一个构造函数。
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;
作为
case
或goto
标签的一部分。switch(foo) { case bar: break; } goto Bar; Foo: return true; Bar: return false;
在所有这些情况下,冒号不用作运算符或关键字(::
除外)。它属于简单语法符号的范畴,如 []
或 {}
。它们的存在只是为了让编译器确切地知道它们周围的其他符号的含义。
在你的例子中,你有一个带有多个构造函数的 class,所以
class Constructor()
有一个默认(无参数)构造函数和一个以 2 个字符串作为参数的构造函数。
如果有人调用默认构造函数,那么 class 将在内部调用带有 2 个重载字符串的构造函数。
这就是那个代码的解释