Questions tagged «optional-parameters»

可选参数是调用者可以在对函数或方法的调用中包括但不必包含的参数。如果省略,则使用默认值。在大多数情况下使用默认值时,可选参数很有用,但有时仍需要指定。


22
如何在C#中使用可选参数?
注意:在C#还不支持可选参数的时候(即在C#4之前)问这个问题。 我们正在构建从C#类以编程方式生成的Web API。该类具有方法GetFooBar(int a, int b),而API具有采用GetFooBar诸如的查询参数的方法&a=foo &b=bar。 这些类需要支持可选参数,C#语言不支持该参数。最好的方法是什么?

4
为什么在实现类上不强制在接口上定义的C#4可选参数?
我注意到,使用C#4中的可选参数,如果您在接口上指定了可选参数,则不必在任何实现类上将该参数设为可选: public interface MyInterface { void TestMethod(bool flag = false); } public class MyClass : MyInterface { public void TestMethod(bool flag) { Console.WriteLine(flag); } } 因此: var obj = new MyClass(); obj.TestMethod(); // compiler error var obj2 = new MyClass() as MyInterface; obj2.TestMethod(); // prints false 有谁知道为什么可选参数设计成这种方式工作? 一方面,我认为覆盖接口上指定的任何默认值的功能很有用,尽管说实话,我不确定您是否应该甚至可以在接口上指定默认值,因为这应该由实现决定。 另一方面,这种断开连接意味着您不能始终交替使用具体的类和接口。当然,如果在实现上指定了默认值,这不会有问题,但是如果您将具体类公开为接口(例如,使用某些IOC框架注入具体类),那么实际上就没有问题了。具有默认值的点作为调用方,无论如何都必须始终提供它。




10
有没有办法在JavaScript的函数调用中提供命名参数?
我发现C#中的命名参数功能在某些情况下非常有用。 calculateBMI(70, height: 175); 如果要在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 } 我已经使用过这种方法。还有另一种方法吗? 我可以使用任何库来做到这一点。

6
如何在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 这类作品。但是,它将忽略FirstName,LastName或Title为NULL的记录。如果在搜索参数中未指定“标题”,则我要包括“标题”为NULL的记录-“名字”和“姓氏”相同。我知道我可以使用动态SQL来做到这一点,但我想避免这种情况。







8
Ruby可选参数
如果我定义这样的Ruby函数: def ldap_get ( base_dn, filter, scope=LDAP::LDAP_SCOPE_SUBTREE, attrs=nil ) 我怎么称呼它只提供前两个和最后一个参数?为什么不像 ldap_get( base_dn, filter, , X) 可能,或者如果可能,怎么办?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.