相关疑难解决方法(0)

为什么params表现得像这样?

产量

1

2

空值

2

class Program
{        
    static void Main(String[] args)
    {
        String s = null;
        PrintLength(s);
        PrintLength(s, s);
        PrintLength(null);
        PrintLength(null, null);    
        Console.ReadKey();
    }

    private static void PrintLength(params String[] items)
    {
        Console.WriteLine(items == null ? "null" : items.Length.ToString());
    }    
}
Run Code Online (Sandbox Code Playgroud)

c#

23
推荐指数
2
解决办法
820
查看次数

C#params object []奇怪的行为

考虑这个代码

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            string[] strings = new string[] { "Test1", "Test2", "Test3" };

            int[] ints = new int[] { 1, 2, 3, 4 };

            Test(strings);

            Test(ints);
        }

        public static void Test(params object[] objects)
        {
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

这个页面https://msdn.microsoft.com/fr-ca/library/w5zay9db.aspx

我希望(params object []对象)是一个元素的数组,以字符串[]作为第一个元素,但是当我调试时,我看到(params object []对象)是{"Test1","Test2" ","Test3"}.

但是,使用int [],我得到一个object [],其中int []作为第一个元素.

用字符串

有了整数

这是未定义的行为吗?这取决于.Net框架版本/ Mono版本吗?

c# arrays casting params

19
推荐指数
2
解决办法
2266
查看次数

有没有办法从myFunc(new int [] {1,2,3}}中删除myFunc(1,2,3)?

向所有人提出问题C#向导.我有一个方法,称之为myFunc,它需要可变长度/类型参数列表.myFunc本身的参数签名是myFunc(params object[] args),我在列表上使用反射(例如,想想这有点像printf).

我想要myFunc(1, 2, 3)区别对待myFunc(new int[] { 1, 2, 3 }).也就是说,在myFunc的主体内,我想枚举我的参数的类型,并希望最终得到{int,int,int}而不是int [].现在我得到后者:实际上,我无法区分这两种情况,它们都以int []的形式出现.

我希望前者显示为obs [].长度= 3,obs [0] = 1等.

而且我曾预计后者会显示为obs [].长度= 1,其中obs [0] = {int [3]}

这可以做到,还是我问不可能?

c# params

9
推荐指数
3
解决办法
719
查看次数

标签 统计

c# ×3

params ×2

arrays ×1

casting ×1