当前位置:  开发笔记 > 编程语言 > 正文

C#中的可空方法参数

如何解决《C#中的可空方法参数》经验,为你挑选了3个好方法。

重复的问题

将空参数传递给C#方法

我可以在c#for .Net 2.0中这样做吗?

public void myMethod(string astring, int? anint)
{
//some code in which I may have an int to work with
//or I may not...
}

如果没有,我能做些类似的事吗?



1> roryf..:

是的,假设您故意添加了V形纹,并且您的意思是:

public void myMethod(string astring, int? anint)

anint现在将拥有一处HasValue房产.



2> Inferis..:

取决于你想要达到的目标.如果您希望能够删除anint参数,则必须创建重载:

public void myMethod(string astring, int anint)
{
}

public void myMethod(string astring)
{
    myMethod(astring, 0); // or some other default value for anint
}

你现在可以这样做:

myMethod("boo"); // equivalent to myMethod("boo", 0);
myMethod("boo", 12);

如果你想传递一个可以为空的int,那么,请看其他答案.;)


那不是多态性
我认为你可以通过如下定义来避免重载:`public void myMethod(string astring,int?anint = null)`.这样,只能使用字符串作为参数调用方法,并且anint变量的值将为null; 并用字符串和整数调用它.

3> Dead account..:

在C#2.0中你可以做到;

public void myMethod(string astring, int? anint)
{
   //some code in which I may have an int to work with
   //or I may not...
}

并调用方法

 myMethod("Hello", 3);
 myMethod("Hello", null);

推荐阅读
雨天是最美
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有