标签: optional-parameters

Java可选参数

如何在Java中使用可选参数?什么规范支持可选参数?

java optional-parameters

763
推荐指数
11
解决办法
87万
查看次数

如何在C#中使用可选参数?

注意:当C#尚未支持可选参数时(即在C#4之前),就会询问此问题.

我们正在构建一个通过C#类以编程方式生成的Web API.该类有方法GetFooBar(int a, int b),API有一个GetFooBar接受查询参数的方法&a=foo &b=bar.

这些类需要支持可选参数,C#语言不支持这些参数.什么是最好的方法?

c# optional-parameters

459
推荐指数
10
解决办法
60万
查看次数

为什么接口上定义的C#4可选参数在实现类时没有强制执行?

我注意到,如果在接口上将参数指定为可选参数,则使用C#4中的可选参数,您不必在任何实现类上使该参数可选:

public interface MyInterface
{
    void TestMethod(bool flag = false);
}

public class MyClass : MyInterface
{
    public void TestMethod(bool flag)
    {
        Console.WriteLine(flag);
    }
}
Run Code Online (Sandbox Code Playgroud)

因此:

var obj = new MyClass();        
obj.TestMethod(); // compiler error

var obj2 = new MyClass() as MyInterface;
obj2.TestMethod(); // prints false
Run Code Online (Sandbox Code Playgroud)

有谁知道为什么可选参数设计为这样工作?

一方面,我认为覆盖接口上指定的任何默认值的能力是有用的,但老实说,我不确定您是否应该能够在接口上指定默认值,因为这应该是一个实现决策.

另一方面,这种断开意味着您不能总是交替使用具体类和接口.当然,如果在实现上指定了默认值,那么这不是问题,但是如果你将具体类作为接口公开(使用一些IOC框架来注入具体的类),那么真的没有具有默认值的点,因为调用者无论如何都必须始终提供它.

.net c# interface optional-parameters c#-4.0

347
推荐指数
4
解决办法
9万
查看次数

正常参数与关键字参数

"关键字参数"与常规参数有何不同?不能传递所有参数name=value而不是使用位置语法?

python arguments keyword optional-parameters named-parameters

271
推荐指数
8
解决办法
23万
查看次数

构造x = x ||是什么 你的意思是?

我正在调试一些JavaScript,并不能解释这||是做什么的?

function (title, msg) {
  var title = title || 'Error';
  var msg   = msg || 'Error on Request';
}
Run Code Online (Sandbox Code Playgroud)

有人可以给我一个提示,为什么这个人正在使用var title = title || 'ERROR'?我有时也会在没有var声明的情况下看到它.

javascript parameters optional-parameters or-operator

230
推荐指数
9
解决办法
11万
查看次数

200
推荐指数
6
解决办法
9万
查看次数

如何在T-SQL存储过程中使用可选参数?

我正在创建一个存储过程来搜索表.我有许多不同的搜索字段,所有这些字段都是可选的.有没有办法创建一个存储过程来处理这个?假设我有一个包含四个字段的表:ID,FirstName,LastName和Title.我可以这样做:

CREATE PROCEDURE spDoSearch
    @FirstName varchar(25) = null,
    @LastName varchar(25) = null,
    @Title varchar(25) = null
AS
    BEGIN
        SELECT ID, FirstName, LastName, Title
        FROM tblUsers
        WHERE
            FirstName = ISNULL(@FirstName, FirstName) AND
            LastName = ISNULL(@LastName, LastName) AND
            Title = ISNULL(@Title, Title)
    END
Run Code Online (Sandbox Code Playgroud)

这种作品.但是它会忽略FirstName,LastName或Title为NULL的记录.如果未在搜索参数中指定Title,我想包含Title为NULL的记录 - 对于FirstName和LastName是相同的.我知道我可以用动态SQL做到这一点,但我想避免这种情况.

t-sql optional-parameters

179
推荐指数
5
解决办法
31万
查看次数

在javascript中命名参数

我发现C#中的命名参数功能在某些情况下非常有用.

calculateBMI(70, height: 175);
Run Code Online (Sandbox Code Playgroud)

如果我想在javascript中使用该怎么办?


我不想要的是 -

myFunction({ param1: 70, param2: 175 });

function myFunction(params){
  // Check if params is an object
  // Check if the parameters I need are non-null
  // Blah blah
}
Run Code Online (Sandbox Code Playgroud)

我已经使用过这种方法.还有另外一种方法吗?

我可以使用任何库来做这件事.(或者有人可以指出我已经做过的那个)

javascript function optional-parameters named-parameters

176
推荐指数
5
解决办法
12万
查看次数

如何在C#中将参数默认为Guid.Empty?

我想说:

public void Problem(Guid optional = Guid.Empty)
{
}
Run Code Online (Sandbox Code Playgroud)

但编译器抱怨Guid.Empty不是编译时常量.

由于我不想更改API,我无法使用:

 Nullable<Guid>
Run Code Online (Sandbox Code Playgroud)

c# optional-parameters c#-4.0

171
推荐指数
4
解决办法
7万
查看次数

函数参数的默认值

1.

int Add (int a, int b = 3);
int Add (int a, int b)
{

}
Run Code Online (Sandbox Code Playgroud)

2.

int Add (int a, int b);
int Add (int a, int b = 3)
{

}
Run Code Online (Sandbox Code Playgroud)

两者都有效; 这是标准的方式,为什么

c++ syntax optional-parameters

124
推荐指数
3
解决办法
11万
查看次数