C#4.0有了Tuple真是好啊

时间:2022-07-27 05:35:05
这样避免了很多小结构的定义,在多组件交互时,我们再也不必为了共用对象发愁了,期待以后Tuple思想更上一层楼

这里有没有那位达人清楚,Tuple的内在实现的,给详细讲讲。

11 个解决方案

#1


唔知系咩

#2


帮顶,学习。

#3


额。。。。不知道什么玩意,下面的大神解释下。

#4


下面的大神解释下。

#5


[Serializable]
public class Tuple<T1, T2> : IStructuralEquatable, IStructuralComparable, IComparable, ITuple
{
    // Fields
    private T1 m_Item1;
    private T2 m_Item2;

    // Methods
    public Tuple(T1 item1, T2 item2)
    {
        this.m_Item1 = item1;
        this.m_Item2 = item2;
    }


    string ITuple.ToString(StringBuilder sb)
    {
        sb.Append(this.m_Item1);
        sb.Append(", ");
        sb.Append(this.m_Item2);
        sb.Append(")");
        return sb.ToString();
    }

    int ITuple.Size
    {
        get
        {
            return 2;
        }
    }

    // Properties
    public T1 Item1
    {
        get
        {
            return this.m_Item1;
        }
    }

    public T2 Item2
    {
        get
        {
            return this.m_Item2;
        }
    }

    //More and more...
}

#6


这个不是和泛型、C++的模板有点一样了

#7


路过,学习!

#8


tuple 是F#的类库

#9


ITuple在那个名称空间里

这样有的结构好象C#2.0就可以实现了吧,为什么我当时没想到自己实现一个呢?

网上说这个东西和函数式编程设计思想有关,有了这样的东西,真的觉得很多类结构似乎没很必要存在了一样。网上说Tuple等于是一种固定成员的泛型集合,这样来看话,应该很平常。只是原来 没提出来,没想到而已

#10


Tuple常常译为“组元”,在大部分支持Tuple的语言中,常常表示成员数目确定,每个成员类型也确定的结构。常常用于表示函数的多个返回值或者查询的结果等。Tuple应当是强类型的,即所有成员的类型在编译时确定。比如,假想语法下

Dim t = New Tuple(Of String, Integer, Double)

那么t将具有三个成员,该数目无法改变;同时三个成员的类型分别为String, Integer和Double,也无法改变。如你所见,Tuple可以看作不用事先声明的结构体,可以根据所使用的场合灵活地创建。

#11


引用 8 楼 li45214521 的回复:
tuple 是F#的类库

F#这个语言是C#的升级吗。。我不知道。。

#1


唔知系咩

#2


帮顶,学习。

#3


额。。。。不知道什么玩意,下面的大神解释下。

#4


下面的大神解释下。

#5


[Serializable]
public class Tuple<T1, T2> : IStructuralEquatable, IStructuralComparable, IComparable, ITuple
{
    // Fields
    private T1 m_Item1;
    private T2 m_Item2;

    // Methods
    public Tuple(T1 item1, T2 item2)
    {
        this.m_Item1 = item1;
        this.m_Item2 = item2;
    }


    string ITuple.ToString(StringBuilder sb)
    {
        sb.Append(this.m_Item1);
        sb.Append(", ");
        sb.Append(this.m_Item2);
        sb.Append(")");
        return sb.ToString();
    }

    int ITuple.Size
    {
        get
        {
            return 2;
        }
    }

    // Properties
    public T1 Item1
    {
        get
        {
            return this.m_Item1;
        }
    }

    public T2 Item2
    {
        get
        {
            return this.m_Item2;
        }
    }

    //More and more...
}

#6


这个不是和泛型、C++的模板有点一样了

#7


路过,学习!

#8


tuple 是F#的类库

#9


ITuple在那个名称空间里

这样有的结构好象C#2.0就可以实现了吧,为什么我当时没想到自己实现一个呢?

网上说这个东西和函数式编程设计思想有关,有了这样的东西,真的觉得很多类结构似乎没很必要存在了一样。网上说Tuple等于是一种固定成员的泛型集合,这样来看话,应该很平常。只是原来 没提出来,没想到而已

#10


Tuple常常译为“组元”,在大部分支持Tuple的语言中,常常表示成员数目确定,每个成员类型也确定的结构。常常用于表示函数的多个返回值或者查询的结果等。Tuple应当是强类型的,即所有成员的类型在编译时确定。比如,假想语法下

Dim t = New Tuple(Of String, Integer, Double)

那么t将具有三个成员,该数目无法改变;同时三个成员的类型分别为String, Integer和Double,也无法改变。如你所见,Tuple可以看作不用事先声明的结构体,可以根据所使用的场合灵活地创建。

#11


引用 8 楼 li45214521 的回复:
tuple 是F#的类库

F#这个语言是C#的升级吗。。我不知道。。