简体   繁体   English

模板列表创建 C#

[英]Template list creation C#

public static void GenerateRandomd<T>(D_List<T> list, int size, Random rand)
    {
        if (list is D_List<int>)
        {
            for (int i = 0; i < size; i++)
                list.Push_Back(rand.Next(0, 10000));
        }
        else if (list is D_List<string>)
        {
            for (int i = 0; i < size; i++)
                list.Push_Back(Gen_rand_string(rand));
        }
        else
        {
            for (int i = 0; i < size; i++)
                list.Push_Back(rand.NextDouble());
        }
    }  

Hello?你好? Is it possible to implement something like this.是否有可能实现这样的事情。 Thank you in advance.先感谢您。

You just need to cast list variable withpattern matching :您只需要使用模式匹配强制转换list变量:

public static void GenerateRandomd<T>(D_List<T> list, int size, Random rand)
{
    switch (list)
    {
        case D_List<int> il:
            for (int i = 0; i < size; i++)
                il.Push_Back(rand.Next(0, 10000));
            break;
        case D_List<string> sl:
            for (int i = 0; i < size; i++)
                sl.Push_Back(Gen_rand_string(rand));
            break;
        default:
            for (int i = 0; i < size; i++)
                (list as D_List<double>).Push_Back(rand.NextDouble());
    }
}

Or you can cast it directly in your code:或者你可以直接在你的代码中转换它:

public static void GenerateRandomd<T>(D_List<T> list, int size, Random rand)
{
    if (list is D_List<int>)
    {
        for (int i = 0; i < size; i++)
            (list as DList<int>).Push_Back(rand.Next(0, 10000)); // cast variable to the DList<int> at each step of the cyclecast
    }
    else if (list is D_List<string>)
    {
        for (int i = 0; i < size; i++)
            (list is D_List<string>).Push_Back(Gen_rand_string(rand));
    }
    else
    {
        for (int i = 0; i < size; i++)
            (list is D_List<double>).Push_Back(rand.NextDouble());
    }
}  

If default scenario implies a different type so you may implement non-generic Push_Back(double value) method for D_List .如果默认情况意味着不同的类型,那么您可以为D_List实现非通用Push_Back(double value)方法。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM