public void _01() { MyDel printDelegate = C01.PrintDelegate(49); Assert.Equal("LOW", printDelegate()); printDelegate = C01.PrintDelegate(51); Assert.Equal("HIGH", printDelegate()); }
public void _01() { //---------------------------------------------------------------------------------------------------- // 对于 parameter array,调用时不需要使用 params 标记, // 可以传任意多个参数,方法会使用这些参数构造一个 array,然后传给方法, //---------------------------------------------------------------------------------------------------- Assert.Equal(1, C01.Fn01(1)); Assert.Equal(3, C01.Fn01(1, 2)); Assert.Equal(6, C01.Fn01(1, 2, 3)); }
public void _01() { var ca = new CA { Name = "luotao", Age = 18 }; var cb = new CB { First = "luo", Last = "tao", PersonsAge = 18 }; Assert.Equal(C01.PrintInfo(ca), C01.PrintInfo(cb)); }
public void _01() { (string Name, int Number)fruit = C01.GetFruit(); Assert.Equal("Apples", fruit.Name); Assert.Equal(5, fruit.Number); //---------------------------------------------------------------------------------------------------- // 此时默认的字段名 Item1/Item2... 依然是可用的. //---------------------------------------------------------------------------------------------------- Assert.Equal("Apples", fruit.Item1); Assert.Equal(5, fruit.Item2); }
public void _01() { //---------------------------------------------------------------------------------------------------- // 没有解构, 通过 Item1/Item2... 访问字段. //---------------------------------------------------------------------------------------------------- var person01 = C01.GetPerson(); Assert.Equal("luotao", person01.Item1); Assert.Equal(18, person01.Item2); //---------------------------------------------------------------------------------------------------- // 没有解构, 显式指定 tuple 的类型. //---------------------------------------------------------------------------------------------------- (string, int)person02 = C01.GetPerson(); Assert.Equal("luotao", person02.Item1); Assert.Equal(18, person02.Item2); //---------------------------------------------------------------------------------------------------- // 没有解构, 显式指定 tuple 的类型, 并且指定 tuple 的字段名. //---------------------------------------------------------------------------------------------------- (string name03, int age03)person03 = C01.GetPerson(); Assert.Equal("luotao", person03.name03); Assert.Equal(18, person03.age03); //---------------------------------------------------------------------------------------------------- // 解构, 将 tuple 的字段解构到单独的变量中. //---------------------------------------------------------------------------------------------------- (string name04, int age04) = C01.GetPerson(); Assert.Equal("luotao", name04); Assert.Equal(18, age04); //---------------------------------------------------------------------------------------------------- // 解构, 将 tuple 的字段解构到单独的变量中. //---------------------------------------------------------------------------------------------------- var(name05, age05) = C01.GetPerson(); Assert.Equal("luotao", name05); Assert.Equal(18, age05); //---------------------------------------------------------------------------------------------------- // 解构, 将 tuple 的字段解构到已经存在的变量中. //---------------------------------------------------------------------------------------------------- string name06; int age06; (name06, age06) = C01.GetPerson(); Assert.Equal("luotao", name06); Assert.Equal(18, age06); }
public void _02() { //---------------------------------------------------------------------------------------------------- // 也可以直接传递一个 array 作为参数, //---------------------------------------------------------------------------------------------------- int[] arr01 = { }; arr01.GetEnumerator(); Assert.Equal(1, C01.Fn01(1, arr01)); int[] arr02 = { 2 }; Assert.Equal(3, C01.Fn01(1, arr02)); int[] arr03 = { 2, 3 }; Assert.Equal(6, C01.Fn01(1, arr03)); }
public void _01() { var x = 6; var y = 6; var z = 6; Assert.Equal(6, x); Assert.Equal(6, y); Assert.Equal(6, z); // 调用方法时, 也需要声明 ref/out 关键字 C01.F01(x, ref y, out z); Assert.Equal(6, x); Assert.Equal(9, y); Assert.Equal(9, z); }
public void _01() { IEnumerator <string> enumerator = C01.BlackAndWhite(); if (enumerator.MoveNext()) { Assert.Equal("black", enumerator.Current); } if (enumerator.MoveNext()) { Assert.Equal("gray", enumerator.Current); } if (enumerator.MoveNext()) { Assert.Equal("white", enumerator.Current); } Assert.False(enumerator.MoveNext()); }
public void _01() { var c01 = new C01(); //---------------------------------------------------------------------------------------------------- // 使用 object-creation expression 语句创建一个 delegate 对象, // 必须传一个 method 作为参数,这个 method 会成为该 delegate 对象的 invocation list 中的第一个 method, //---------------------------------------------------------------------------------------------------- MyDel myDel = c01.Fn01; //---------------------------------------------------------------------------------------------------- // invocation list 中的 method 可以是 instance method 或者 static method, // 只要 method 的 signature 和 return type 是匹配的, //---------------------------------------------------------------------------------------------------- myDel = C01.Fn02; //---------------------------------------------------------------------------------------------------- // 可以直接将一个 method 赋值给 delegate,会自动进行隐式类型转换 //---------------------------------------------------------------------------------------------------- myDel = c01.Fn01; Assert.Equal(4, myDel(2)); }
public void _01() { var thing01 = ("Apples", 5); Assert.Equal("Apples", thing01.Item1); Assert.Equal(5, thing01.Item2); //---------------------------------------------------------------------------------------------------- // 如果使用另外一个对象的属性来构造一个 tuple, 则可以从这个对象的属性名来推断出 tuple 类型的字段名. //---------------------------------------------------------------------------------------------------- var c01 = new C01 { Name = "Apples", Count = 5 }; var thing02 = (c01.Name, c01.Count); Assert.Equal("Apples", thing02.Name); Assert.Equal(5, thing02.Count); //---------------------------------------------------------------------------------------------------- // 此时默认的字段名 Item1/Item2... 依然是可用的. //---------------------------------------------------------------------------------------------------- Assert.Equal("Apples", thing02.Item1); Assert.Equal(5, thing02.Item2); }
public void _01() { Assert.Equal(10, C01.F01(3, 4)); }
public void _01() { C01.Fn01(); }
public void _01() { Assert.Throws <InvalidCastException>(C01.F01); Assert.Equal(2, C01.F02()); Assert.Equal(2, C01.F03()); }
public void _01() { Assert.Equal(1, C01.F01(1, 1)); Assert.Equal(2.2, C01.F01(1.1, 2.2)); }
public void Fn01() { Assert.Equal(6, C01.Fn01()); }