码迷,mamicode.com
首页 > Windows程序 > 详细

C#7.0新特性

时间:2017-08-01 00:26:30      阅读:250      评论:0      收藏:0      [点我收藏+]

标签:c#   ++   main   反射   img   style   tuple   variables   stat   

来源参考:https://docs.microsoft.com/zh-cn/dotnet/csharp/whats-new/csharp-7

【VS2017支持】

1.out 变量(out variables)

  以前out参数需要在调用方法外部提前被声明,C#7.0允许out参数在方法参数传递中被声明。

  旧写法:

int num;
if (int.TryParse("123", out num))
{
    Console.WriteLine(num);
}
else
{
    Console.WriteLine("Could not parse!");
}

  新写法:

if (int.TryParse("123", out int num))
{
    Console.WriteLine(num);
}
else
{
    Console.WriteLine("Could not parse!");
}

  out参数在方法中声明支持var隐式类型

技术分享

2.元组(Tuples)

  一个方法有多个返回类型值得解决方案,使用Tuples。

  旧写法:

static void Main(string[] args)
{
    var data = GetFullName();
    Console.WriteLine(data.Item1);
    Console.WriteLine(data.Item2);
    Console.WriteLine(data.Item3);
}
static Tuple<string, string, string> GetFullName()
{
    return new Tuple<string, string, string>("a", "b", "c");
}

  新写法:[需要通过nutget获取System.ValueTuple的引用]

技术分享

static void Main(string[] args)
{
    var data = GetFullName1();
    Console.WriteLine(data.a);
    Console.WriteLine(data.b);
    Console.WriteLine(data.c);
}
static (string a, string b, string c) GetFullName1()
{
    return ("a", "b", "c");
}

  解构元组获取返回值(多个):

static void Main(string[] args)
{
    //不用var 定义解构元组
    (string a, string b, string c) = GetFullName1();
    Console.WriteLine(a);
    Console.WriteLine(b);
    Console.WriteLine(c);
}
static (string a, string b, string c) GetFullName1()
{
    return ("a", "b", "c");
}

3.pattern matching(匹配模式)

  判断类型时直接赋值。

  旧写法:

object obj = 1;
if (obj is int) //is判断
{
    int num1 = (int)obj; //
    int num2 = num1 + 10; //加10
    Console.WriteLine(num2); //输出
}

 

  新写法:[使用反射时,考虑使用这种写法]

object obj = 1;
if (obj is int num1)//判断obj为int型,直接赋值给num1
{
    int num2 = num1 + 10;
    Console.WriteLine(num2); //输出
}

 

  switch的新玩法:

static dynamic Add(object a)
{
    dynamic data;
    switch (a)
    {
        case int b:
            data = b++;
            break;
        case string c:
            data = c + "aaa";
            break;
        default:
            data = null;
            break;
    }
    return data;
}

 

C#7.0新特性

标签:c#   ++   main   反射   img   style   tuple   variables   stat   

原文地址:http://www.cnblogs.com/DaphneOdera/p/7266353.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!