如何 r/w 通过索引访问 ValueTuple 成员?

How do I r/w access ValueTuple members by index?

按照我在 google 中找到的示例,我尝试了

我需要在我的 cs 文件中写入什么才能使 ITuple 在那里已知?我 googled for it, didn't find anything (maybe I are blind, but yet).

using System.Runtime.CompilerServices;

public class CMatrix
{
    public (CVector r, CVector u, CVector f, CVector t) m_data;

    public CVector this[int i]
    {
        get => ((ITuple) m_data)[i];
        set => ((ITuple) m_data)[i] = value;
    }
}

结果:“Class 或名称 space 名称 'ITuple' 未知”。

我的目标框架是“.NET Framework 4.7.2”。

提示:问题是“我如何让它起作用”,而不是“为什么我的解决方案不起作用”。我发布它只是为了让我了解我想要实现的目标。

正如评论中提到的,没有办法使用索引 setter,据我所知,索引器总是抛出 IndexOutOfRangeException for valuetuple on .net 4.8

显而易见的解决方案是编写您自己的索引器:

            get =>
                i switch
                {
                    0 => m_data.r,
                    1 => m_data.u,
                    //...
                    _ => throw new ArgumentOutOfRangeException(nameof(i));
                };