C#字符串操作方法签名等

时间:2023-03-09 08:00:28
C#字符串操作方法签名等
class Program
{
/// <summary>
/// C# 里Main方法不需要public,而且不允许有两个是Main(string[] args)【包括String[] args】,因为它们的方法签名一样
/// 方法签名不包括方法修饰符和返回类型;(主要是因为返回值在调用时是可以忽略的,而参数则必须给出);
/// </summary>
/// <param name="args"></param>
static void Main(string[] args)
{
/*
注意,对于重载方法,每个方法都是有一个Hash码的,比如Test()的是Test$0,Test(string param)是Test$1,Test(params string[] args)是Test$3
在编译阶段编译器是会按照一个策略来选择一个方法,并且写到二进制码的时候就会是一个具体的方法名而不是源码的方法名
所以下面的调用虽然同时符合Test()和Test(params string[] args),但是编译器根据方法匹配优先级匹配到了Test()这个方法,
所以编译成二进制文件时这部分代码就变成了Test$1();从而不会出现混乱的情况;
*/
Test(); // C# 里IList表示是支持RandomAccess的,即通过数组下标来访问,所以LinkedList没有实现这个接口;
IList<int> list = new List<int>(5);
list[1] = 4;
foreach (var e in list)
{
// 这里应该是顺序比较的(应该是直接比较引用值而非equals)
var idx = list.IndexOf(4);
}
ICollection<int> list2 = new LinkedList<int>();
} public static void Test()
{ // C# 这种第二行风格的好处是,代码就可以从下面一行写起,如果是{在方法签名那行,那么自己老是不习惯,总要在方法签名下面空一行再写;
Console.WriteLine($"Hello, World.{3 - 4 / 2}");
       // 格式化输出
       Console.WriteLine($"Area of Circle   = {3.835:F2}");
} public static void Test(string param)
{
// @"..."字符串的用处就是令内部的字符都是单个字符没有转义,否则下面要写成\\
// 注意在这里两个""算一个",毕竟"仍然是很特殊的存在,如果直接是@"wo"u"tt"那么编译器会认为是"wo" u 和"tt",因此要写成@"wo""u""tt"这样编译器就能识别为wo"u"tt
Console.WriteLine(@"wo shi ""mm"" skfld,E:\common\test");
} /// <summary>
/// 被params修饰的参数必须是方法所有参数的最后一个
/// </summary>
/// <param name="args"></param>
public static void Test(params string[] args)
{
Console.WriteLine("\"进口量\"");
}
}