标签: optional-parameters

具有可选参数的Web服务方法

可能重复:
我是否可以为ASP.NET SOAP Web服务提供可选参数

我试过四处寻找,但我真的找不到合适的解决方案.很抱歉重复,因为我知道之前有人问过这个问题.我有一个Web服务方法,我想在其中有一个可选参数,例如:

public void MyMethod(int a, int b, int c = -3)
Run Code Online (Sandbox Code Playgroud)

我已经知道我不能使用可空参数,所以我只想尝试使用默认值.问题是,当我调用此方法而不提供参数时,c仍然会获得异常.有什么地方我必须指定它实际上是可选的吗?

Thanksю

.net c# web-services optional-parameters

26
推荐指数
3
解决办法
5万
查看次数

DateTime可选参数中的默认值应该是多少?

通常,如果我有可选参数的可空类型,我会将null作为默认值.这样我知道如果值为null,则调用者不希望为该值指定任何值.

public void Foo(string text, string text2= null);
Run Code Online (Sandbox Code Playgroud)

如果参数通常是正整数,我可以使用负数

public void Foo(string text, int index=-1);
Run Code Online (Sandbox Code Playgroud)

DateTime怎么样?它不是可空的,并且(据我所知)它没有无意义的数字,也不能成为真正的输入(如正整数的-1).还是有吗?在这种情况下你会用什么?

我也知道我可以使用可空DateTime类型,但这意味着方法调用者必须使用Nullable以及反对只是方便地传递DateTime.

.net c# datetime optional-parameters

25
推荐指数
4
解决办法
5万
查看次数

互斥的powershell参数

情景

  • 我正在使用Visual Studio 2008和.NET 3.5为Powershell 2.0编写cmdlet
  • cmdlet需要3个参数.

我想要的cmdlet语法是这样的:

cmdletname [foo|bar] p1, p2
Run Code Online (Sandbox Code Playgroud)
  • 这是因为用户必须为"-foo"或"-bar"赋予值,但不能将两者放在一起.

有效输入的例子

cmdletname -foo xxx -p1 hello  -p2 world
cmdletname -bar yyy -p1 hello  -p2 world
Run Code Online (Sandbox Code Playgroud)

无效输入的示例

cmdletname -foo xxx -bar yyy -p1 hello  -p2 world
Run Code Online (Sandbox Code Playgroud)

我的问题

  • 我的问题是如何在powershell中执行此操作,以便它为我完成所有检查 - 或者如果可能的话.
  • 我知道我可以使用foo和bar只有两个可选参数,只需手动进行错误检查.这就是我目前实施的方式.
  • 或者,我对不同方法的建议感兴趣.

parameters powershell optional-parameters

24
推荐指数
3
解决办法
1万
查看次数

使用可选参数冲突重载方法

我有两个重载方法,一个带有可选参数.

void foo(string a)  { }  
void foo(string a, int b = 0) { }  
Run Code Online (Sandbox Code Playgroud)

现在我打电话给:

 foo("abc");
Run Code Online (Sandbox Code Playgroud)

有趣的是第一次重载被调用.为什么第二次重载的可选值设置为零?

说实话,我希望编译器带来一个错误,至少是一个警告,以避免无意中执行错误的方法.

这种行为的原因是什么?为什么C#团队以这种方式定义它?

parameters overloading optional-parameters c#-4.0

24
推荐指数
3
解决办法
6261
查看次数

C#可选参数或方法重载?

由于C#添加了可选参数,因此使用可选参数或方法重载被认为是更好的做法,或者是否存在您希望使用其中一个的特定情况.即具有许多参数的函数更适合w /可选参数?

c# coding-style overloading optional-parameters

24
推荐指数
3
解决办法
2万
查看次数

添加可选参数后System.MissingMethodException

我在一个组件中有一个可选参数之后得到System.MissingMethodException的错误,并且调用它的另一个组件没有构建,因为它使用旧的参数调用它.

只有添加了参数的组件才会构建部署为补丁.调用组件是旧的,因为它没有变化.

当调用组件运行时,它会给出错误:

例外信息

异常类型:System.MissingMethodException消息:找不到方法:'LabelURLs IPSD.BnB.Transaction.Postage.GetLabelURLs(System.String)'.数据:System.Collections.ListDictionaryInternal TargetSite:Void GenerateScanForm(Int32,Int32)HelpLink:NULL源:BnBDispenseQueueProcess

据我所知,它不应该引发错误,因为新参数是可选的.还有一件事是调用组件(EXE)作为Windows服务运行.

我们找到了一个非常有线的解决方法来让它运行.通过删除更改的组件一次并运行调用组件,它将说找不到DLL.再次放置相同的DLL并调用组件工作正常:).

我想我错过了.net的一些内部.

如果需要更多信息,请告诉我.

.net c# missingmethodexception optional-parameters vb.net-2010

24
推荐指数
1
解决办法
7762
查看次数

多个可选参数调用函数

假设我有一个如下所示的函数它需​​要3个参数,2个具有可选值

private void  myfunc (int a, int b=2, int c=3)
{
  //do some stuff here related to a,b,c
}
Run Code Online (Sandbox Code Playgroud)

现在我想调用这个函数如下可能吗?

myfunc(3,,5)
Run Code Online (Sandbox Code Playgroud)

所以我希望它使用默认参数b = 2

但它正是这样给出错误的.

这里是错误消息

Argument missing
Run Code Online (Sandbox Code Playgroud)

C#4.5

c# function optional-parameters optional-variables optional-arguments

24
推荐指数
2
解决办法
2万
查看次数

是否使用"Optional,DefaultParameterValue"属性?

使用OptionalDefaultParameterValue属性之间是否有任何区别而不使用它们?

public void Test1([Optional, DefaultParameterValue("param1")] string p1, [Optional, DefaultParameterValue("param2")] string p2)
{
}

public void Test2(string p1= "param1", string p2= "param2")
{
}
Run Code Online (Sandbox Code Playgroud)

两者都有效:

Test1(p2: "aaa");
Test2(p2: "aaa");
Run Code Online (Sandbox Code Playgroud)

c# optional-parameters c#-4.0

24
推荐指数
2
解决办法
3051
查看次数

设置C#可选参数的默认值

每当我尝试将可选参数的默认值设置为资源文件中的某些内容时,我都会得到编译时错误

'message'的默认参数值必须是编译时常量.

有什么办法可以改变资源文件的工作方式来实现这个目标吗?

public void ValidationError(string fieldName, 
                            string message = ValidationMessages.ContactNotFound)
Run Code Online (Sandbox Code Playgroud)

在这里,ValidationMessages是一个资源文件.

c# default-value optional-parameters

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

是否可以在c#中的lambda表达式中使用可选/默认参数?

有没有办法在c#中使用带有lambda表达式的可选参数(默认参数)?我已经阅读了文档,但却无法找到任何方式.

为了说明,我可以定义使用可选参数提供默认值的简单方法,如下所示:

void MyMethod(string arg = "default-value")
{ 
    Console.WriteLine(arg);
}
Run Code Online (Sandbox Code Playgroud)

我想知道的是,如果我能够使用lambda表达式做同样的事情.

// gives a syntax error
Action<string> MyMethod = (arg = "default") => Console.WriteLine(arg);
Run Code Online (Sandbox Code Playgroud)

我可以使用委托使用默认值的可选参数,但这看起来有点笨拙.

delegate void MyDelegate(string arg = "default");
MyDelegate MyMethod = arg => Console.WriteLine(arg);
Run Code Online (Sandbox Code Playgroud)

或者我可以检查lambda体中的参数,比如...

 Action<string> MyMethod = (arg) => Console.WriteLine(string.IsNullOrEmpty(arg) ?
                                    "default" :
                                    arg);
Run Code Online (Sandbox Code Playgroud)

但这再次看起来有点笨拙.

是否可以使用可选参数在c#中的lambda表达式中设置默认值?

c# lambda optional-parameters

23
推荐指数
1
解决办法
8588
查看次数