C# 元组的声明和初始化

元组         

2620d593b14a5cc39e5b4dcccf599bd2.png

f8bb8cdd0f7c932fe2dadd6608e83e5b.png

元组能够组合不同类型的对象。使用数组可以组合相同类型的对象,而元组允许使用类型的不同组合。元组有助于减少以下两个需求:

· 定义自定义类或结构,以返回多个值

· 定义参数,从方法中返回多个值

自从.NET Framework 4.0版本以来,元组就以泛型 Tuple 类的形式存在。然而,它们并没有得到广泛使用,因为元组的不同对象可以通过 Item1、Item2、Item3 等属性访问,这既不吸引人,也没有提供任何关于其含义的信息。

这在 C# 7中发生了变化,C# 7提供了在编程语言中集成的元组功能,这有了很大的改进,如下一个示例所示,它使用了一个简单的不可变的 Person 类:

public class Person
{
  public Person(string firstName, string lastName) 
  {
    FirstName = firstName; 
    LastName = lastName;
  }
  public string FirstName { get; }
  public string LastName { get; }
  public override string ToString() => $"{FirstName} {LastName}";
  //...
}

元组的声明和初始化

e57a888234648eced263e588c774bb19.png

可以使用圆括号声明一个元组,并使用通过括号创建的元组字面量来初始化。在下面的代码片段中,左侧声明了一个元组变量 t,其中包含一个字符串、一个 int 和一个Person。右边使用一个元组字面量来创建一个元组,它包含字符串 magic、数字 4,以及使用 Person 类的构造函数初始化的 Person 对象。访问元组时,可以使用变量 t以及在括号中声明的成员(本例中为 s、i 和 p)。

private static void IntroTuples()
{
  (string s, int i, Person p) t = ("magic", 42, new Person(
   "Stephanie", "Nage1"));
  Console.WriteLine($"s: {t.s}, 1: {t.i}, p: {t.p}");
  //...
}

运行应用程序时,输出显示了元组的值::

s:magic,i:42,p:Stephanie Nage1

元组字面量也可以分配给元组变量,而不需要声明它的成员。这样,元组的成员就可以使用ValueTuple结构的成员名称来访问:Iteml、Item2和Item3。

private static void IntroTuples()
{
  //...
  var t2 = ("magic", 42, new Person("Matthias", "Nage1"));
  Console.WriteLine($"string: {t2.Iteml}, int: {t2.Item2),
    person: {t2.Item3}");
    //..
}

可以通过定义名称后跟冒号,来为元组字面量中的元组指定名称,它与对象字面量的语法相同:

private static void IntroTuples()
{
  //... 
  var t3 = (s: "magic", i: 42, p: new Person("Matthias", "Nage1")); 
  Console.WriteLine($"s: {t3.s}, i: {t3.i}, p: {t3.p}");
  //...
}

有了这些,名字只是一种方便的方式。当类型匹配时,可以将一个元组分配给另一个元组;名字并不重要:

private static void IntroTuples()
{
  //...
  (string astring, int anumber, Person aperson) t4 = t3;
  Console.WriteLine($"s: {t4.astring}, i: {t4.anumber}, p: {t4.aperson}");
}

往期推荐

aaed6afdde683f737ba276af27d22c91.png

Love life,love yourself

关注小编不迷路呦~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值