zoukankan      html  css  js  c++  java
  • C#中的元组(Tuple)和结构体(struct)

    在正常的函数调用中,一个函数只能返回一个类型的值,但在某些特殊情况下,我们可能需要一个方法返回多个类型的值,除了通过ref,out或者泛型集合可以实现这种需求外,今天,讲一下元组和结构体在这一方面的应用。

        元组

        元组(Tuple)是一种数据结构,用于存放一组数据,它是值类型的,可读写的,类似于泛型集合,但元组的使用更加精巧,另外,元组最多接受7个元素。

        元组的声明很简单:

    var tupledata=("你好",1,2) ;//最简单的声明方法 
    Tuple<int,string> tuple=new Tuple<int, string>(1,"你好");//最正式的声明

        正因为他是值类型,所以声明的时候要同时赋值,不然编译不通过。

        那如何去获取元组中的值呢?很简单,使用元组名.Item1-7

    int a = tuple.Item1;string b = tuple.Item2;

        元组中的元素也是可以自定义名称的

    var tup = (name: 1, age: 2);Console.WriteLine(tup.Item1);   //之前的调用方法依然是可用的Console.WriteLine(tup.age);

        了解了这些,我们在方法中就可以尝试通过元组去返回数据了

    static (int, string) returnTuple() => (1, "你好");

    var result =returnTuple();
    Console.WriteLine(result.Item1);
    Console.WriteLine(result.Item2)

        运行结果如下:

     

        结构体

        结构体(struct)也是值类型的,它的声明就像类一样,只不过关键字是struct

        下面来看一下它的声明:

      struct MyStruct    { 
    public int id;
    public string name;
    }

        它的使用也很简单,继续来看代码

    MyStruct test = new MyStruct{ 
    id = 1,
          name = "小艺"
    };

     

        因为结构体是一种值类型的,所以当一个结构体对象给另一个实例对象赋值后,改变任意一方的属性值,都不会影响到新赋值的实例对象,而引用类型则不同,本节对此不展开讨论,读者有兴趣可以关注后续的文章。

      我的公众号二维码:

  • 相关阅读:
    [算法练习]ZigZag Conversion
    获取所有后缀DDE打开命令
    [算法练习]Add Two Numbers
    获取dll编译时生成的pdb文件的名称
    [转载]定位 C++/CLI 库的加载失败异常
    在C++/CLI环境下,千万不要把普通全局函数当标准C/C++的函数指针传递给native的库使用
    Mono集成中使用api获取当前mono 调用堆栈的方法
    简单对比了一下MonoXml与SystemXml在Unity下的表现
    C++从LPEXCEPTION_POINTERS获取调用堆栈
    遇到doxygen生成的chm文档目录如果有中文是乱码?
  • 原文地址:https://www.cnblogs.com/charlesmvp/p/13223800.html
Copyright © 2011-2022 走看看