首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >C# -参数可以为空吗?

C# -参数可以为空吗?
EN

Stack Overflow用户
提问于 2011-07-05 22:15:31
回答 4查看 25.9K关注 0票数 67
代码语言:javascript
运行
复制
public void Foo(params string[] values)
{
}

是否可以将values设置为null,或者将其始终设置为0或更多项?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-07-05 22:16:51

绝对可以-您可以使用类型为string[]且值为null的参数来调用它:

代码语言:javascript
运行
复制
string[] array = null;
Foo(array);
票数 82
EN

Stack Overflow用户

发布于 2011-07-05 22:29:08

我决定自己写一些代码来测试一下。使用以下程序:

代码语言:javascript
运行
复制
using System;

namespace TestParams
{
    class Program
    {
        static void TestParamsStrings(params string[] strings)
        {
            if(strings == null)
            {
                Console.WriteLine("strings is null.");
            }
            else
            {
                Console.WriteLine("strings is not null.");
            }
        }

        static void TestParamsInts(params int[] ints)
        {
            if (ints == null)
            {
                Console.WriteLine("ints is null.");
            }
            else
            {
                Console.WriteLine("ints is not null.");
            } 
        }

        static void Main(string[] args)
        {
            string[] stringArray = null;

            TestParamsStrings(stringArray);
            TestParamsStrings();
            TestParamsStrings(null);
            TestParamsStrings(null, null);

            Console.WriteLine("-------");

            int[] intArray = null;

            TestParamsInts(intArray);
            TestParamsInts();
            TestParamsInts(null);
            //TestParamsInts(null, null); -- Does not compile.
        }
    }
}

得到了以下结果:

代码语言:javascript
运行
复制
strings is null.
strings is not null.
strings is null.
strings is not null.
-------
ints is null.
ints is not null.
ints is null.

所以,是的,与params关联的数组完全有可能为null。

票数 50
EN

Stack Overflow用户

发布于 2013-12-12 18:53:21

我的第一个猜测是使用默认值null声明参数,这在某些情况下是有意义的,但c#语言不允许这样做。

代码语言:javascript
运行
复制
static void Test(params object[] values = null) // does not compile
{
}

错误CS1751:无法为参数数组

指定默认值

通过显式传递null来绕过此限制的方法已经得到了回答。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6584131

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档