微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

CLI/C++ 在 C# (.Net Framework 4.7) 中命名为 ValueTuple

如何解决CLI/C++ 在 C# (.Net Framework 4.7) 中命名为 ValueTuple

有什么方法可以在 CLI/C++ 中实现如下相同的效果

namespace Test
{
static class TestClass
{
  static (int a,int b) test = (1,0);
  static void v()
  {
    var a = test.a;
    var b = test.b;
    _ = (a,b);
  }
}

} 那么有什么方法可以在 CLI/C++ 中创建一个名称不同于 Item1 和 Item2 的 ValueTuple,以便它可以在 C# 中使用。 我使用的是 .Net Framework 4.7。

解决方法

值的名称不是 ValueTuple<...> 的一部分。

名称由编译器维护,并且在需要与外部代码通信时添加属性。

sharplab.io 上查看。

这个:

namespace Test
{
    static class TestClass
    {
        static (int a,int b) test = (1,0);
        static void v()
        {
            var a = test.a;
            var b = test.b;
            _ = (a,b);
        }
    }
}

将被翻译成这样:

using System;
using System.Diagnostics;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Security;
using System.Security.Permissions;

namespace Test
{
    internal static class TestClass
    {
        [TupleElementNames(new string[] {
            "a","b"
        })]
        private static ValueTuple<int,int> test = new ValueTuple<int,int>(1,0);

        private static void v()
        {
            int item2 = test.Item1;
            int item = test.Item2;
        }
    }
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。