【问题标题】:Can a generic method access the array elements of a generic parameter?泛型方法可以访问泛型参数的数组元素吗?
【发布时间】:2021-12-25 13:48:58
【问题描述】:

我调用 FunctionB 使用这样的泛型方法传递一个字符串数组。

string[] array1 = {"data1", "data2", "data3"};

void FunctionA ( )
{
    FunctionB ( array1 );
}

void FunctionB <T> (T arg)
{
    print (typeof(T));
}

我得到了 arg 的数据类型。有什么办法可以在 FunctionB 中包含 array1 的数据元素?

【问题讨论】:

  • 这是什么编程语言?
  • Unity中使用的C#。
  • 不要在评论中回答。请更新标签。
  • 这能回答你的问题吗? C# generic constraint: Array of Structsvoid FunctionB &lt;T&gt; (T[] arg).
  • 我是 C# 的新手。我什至不确定我的代码是否正确。我想要的是,,,如何调用具有不同数据类型参数的FunctionB,例如string[]或string[,]......对于初学者来说似乎并不容易。

标签: c# unity3d generics


【解决方案1】:

您可以创建另一个方法,该方法具有一个数组作为参数,并弹出数组的每个元素。 示例:

void FunctionB <T> (T[] arg)
{
    foreach(T item in arg)
    {
        print (item);
    }
}

【讨论】:

    【解决方案2】:

    我想你需要使用模式匹配。操作方法如下:

    static class Program
    {
        static void FunctionB<T>(T arg)
        {
            if (arg is string[] array)
            {
                foreach (var item in array)
                {
                    Console.WriteLine(item);
                }
            }
        }
        static void Main(string[] args)
        {
            // TODO: Put code here
            string[] array1 = { "data1", "data2", "data3" };
    
            FunctionB(array1);
            //data1
            //data2
            //data3
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多