1,方法的参数可选
声明一个带有可选参数的方法
static void M1(int notOptional,string a1 = "default arg")
{
Console.WriteLine("a1 = {0}",a1);
}
然后可以按下面的方法调用
static void Main(string[] args)
{
M1(1);
M1(2,"Having 2 arguments");
}
这时候如果再声明一个同名的方法,参数的类型和数目也相同,只不过没有可选参数,这时候会调用哪个方法呢,读者可以自己试验一下。
static void M1(int notOptional,string a1 )
{
Console.WriteLine("a1 = {0}",a1);
}
2,命名参数
命名参数是指在调用方法的时候不考虑参数的顺序,只是指定参数的名字来给形参付值。
static void M1(int notOptional,string a1 )
{
Console.WriteLine("a1 = {0}",a1);
}
上面的方法可以这样调用
static void Main(string[] args)
{
M1(a1:"arg1",notOptional:1);
}
3.Dynamic ExpandoObject
命名空间System.Dynamic用来支持这个应用,具体用法如下:
static void Main(string[] args)
{
dynamic t = new ExpandoObject();
t.string1 = "string1";
t.Value = 1000;
Console.WriteLine("t's string1 = {1},t's value = {1}",t.string1,t.Value);
Console.ReadLine();
}
4.范型自动转换
就是像下面的用法:
IEnumerable<object> objs = new List<string> {
" 0"," 1"," 2"
};
未完待整理。。。。。