bp-KeyWord-params

params

在学习Task.WhenAll的过程中发现该keyword


翻译:n. 参数; 参数个数


MSDNhttps://msdn.microsoft.com/zh-cn/library/w5zay9db


MSDN解释

1.使用 params 关键字可以指定采用数目可变的参数的方法参数。

2.可以发送参数声明中所指定类型的逗号分隔的参数列表或指定类型的参数数组。 还可以不发送参数。 如果未发送任何参数,则 params 列表的长度为零。

3.在方法声明中的 params 关键字之后不允许任何其他参数,并且在方法声明中只允许一个 params 关键字


MSDN解释分析

1.是用途,2和3是解释怎么使用

提炼关键字有:
指定类型、
逗号分隔、
没有参数(MSDN把传参叫做发送参数,,,,)、
被修饰的参数是最后一个参数、
一个方法仅能有一个该keyword


Demo

static void TryUseParams()
{
   TryUseParams("我在尝试发送5个参数", 1,2,3,4,5);
   TryUseParams("我在尝试发送2个参数", 33,2);
}

static void TryUseParams(string title,params int[] array)
{
   if (array.Length != 0)
   {
       Console.WriteLine("Start Print {0}!", title);
       for (int i = 0; i < array.Length; i++)
       {
          Console.WriteLine(i);
       }
   }
}

Demo效果


Case

public static Task WhenAll(params Task[] tasks);
public static Task WhenAny(params Task[] tasks);
最常用的public static void WriteLine(string format, params object[] arg)居然就这样实现的


尝试自己去实现WriteLine()

static void UseMyWriteLine()
{
     OverrideWeiteLine("{0}我尝试{1}我自己实现的---{2}---", 2, "自己", "WriteLine");
}

static void OverrideWeiteLine(string stringFormat, params object[] arg)
{
    var stringBuilder = new StringBuilder();

    for (int i = 0; i < arg.Length; i++)
    {
        stringBuilder.AppendFormat(stringFormat, arg[i]);
    }
    Console.WriteLine(stringBuilder.ToString());
}

这样的实现并没有成功,在没有实现成功的情况下,想如果能看到源码就好了,查到原来可以做到
https://referencesource.microsoft.com/#q=console.writeline

深入几层发现Console.WriteLine封装中调用string.Format(stringFormat, arg)来实现


You Can!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值