问题标签 [params-keyword]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
166 浏览

c# - 为什么要编译这段代码?

假设我定义了一个这样的方法:

如果我尝试这样调用它,显然我得到一个错误并且代码将无法编译:

方法 'ListInts' 有一个参数,但使用 0 个参数调用

但是当我像这样更改方法定义时:

没有错误。我很好奇为什么会这样?为什么第二个代码编译没有任何错误?params当我们使用关键字时,幕后会发生什么?

0 投票
2 回答
47 浏览

c# - 可以区分什么都没有传递,或者一个 null 传递给 F(params String[] values)?

我有一个功能

它充当所有Items 的过滤器。

因此,如果我调用 eg Filter("prop1"),那么所有作为第一个条目的Items"prop1"都将匹配它们的属性。

如果我调用,则应返回Filter()所有s 。Item

我还需要能够匹配null值。因此,例如现在我可以调用Filter(null, null)所有Itemsnull, null作为它们的第一个属性将被匹配。

除了我打电话时,所有这些都有效Filter(null)。它将以与 相同的方式解释Filter(),但意图是前者应返回所有Itemsnull作为其第一个属性,而后者应返回所有Items。

我尝试定义一个重载来处理这个

但是Ambiguous Invocation当我调用Filter(null).

0 投票
2 回答
712 浏览

c# - 在 C# 中同时具有特定参数和 params 方法重载的好处

在 .NET 框架中有许多示例,其中一个方法有多个重载,其中一些使用特定数量的参数,然后params是使用关键字的最终“catch all”。常见的例子是在String课堂上,例如:

我想知道为什么有这么多这些方法重载是否有特殊原因?起初我认为这可能与性能有关;这个 SO 问题的问题和答案 -在 C# 中使用参数的成本- 会建议这样做。

但是,我开始使用Reference Source网站深入研究 .NET 源代码。我在String 类源代码中注意到了这一点:

String.Concat()实际上根据使用了多少固定参数运行不同的代码——在我看来这肯定是一种优化。String.Format()但是似乎只是提供了 mainparam方法的包装器 - 请参阅下面的释义代码:

那么是否有性能优势,或者这只是为了方便,或者两者兼而有之?在上面的特定情况下,我没有看到任何明显的好处,它似乎只是重复工作。

0 投票
4 回答
2332 浏览

c# - 如何在 C# 中使用 params 关键字和调用者信息?

我正在尝试将 C# 5.0 调用方信息与 C# params 关键字结合起来。目的是为日志框架创建一个包装器,我们希望记录器像 String.Format 一样格式化文本。在以前的版本中,该方法如下所示:

我们这样称呼它:

现在,我们要捕获调用者信息并记录它。所以签名变成:

这不会编译,因为参数必须是最后一个参数。所以我试试这个:

有没有办法在不提供 sourceMembername 或将 messageArgs 参数显式分配为命名参数的情况下调用它?这样做违背了 params 关键字的目的:

有没有办法做到这一点?似乎传递调用者信息的“hacky”方式排除了使用 params 关键字。如果 C# 编译器认识到调用者成员信息参数根本不是真正的参数,那就太棒了。我认为没有必要明确地传递它们。

我的备份将是跳过 params 关键字,调用者将不得不在最后一个示例中使用长签名。

0 投票
4 回答
339 浏览

c# - What is the most concise way to array a series of string variables that may be empty

I need to array an ad-hoc set of strings like this

without including null or empty strings. I know I can use a child function and params:

but is there any simpler way to do this that I'm not seeing?

EDIT: Sorry about that, happy to vote up the first LINQer, but I should have specified that I was trying to get rid of the child method altogether, not simplify it.

0 投票
4 回答
2344 浏览

android - How do I change (String ...params) argument list in doInBackground asyncTask in android?

by default from api for asyncTask the signature for it is doInBackground(Param ...params)

in my app I have this signature:

I tried and changed to this:

but it gives me error:

class DataTasker must be declared abstract or implement abstract method 'doInBackground(Params...params)

I know this 3 dots is an array and i can access it like

params[0] , params[1].

But still confused, in my main activity class I want to pass this data for background task: a string , an integer

But apparently, i must pass only one argument

0 投票
3 回答
113 浏览

c# - 命名空间问题(缺少 }?)并将参数传递给显示数组的方法

我的代码有两个问题:

1- 我在 Main() 中使用 Console.Writeline 时遇到奇怪的语法错误,我认为我缺少右花括号 '}'

2- 在 Main() 之后,我似乎无法弄清楚我的第一个方法。它应该是一个简单的 void 方法来编写数组的元素,但 Visual Studio 似乎认为它是错误中的类或命名空间。

谁能发现我哪里搞砸了?

编辑:谢谢大家!我忘了重命名那里的一些变量和方法,但主要问题是缺少;和不必要的数据类型作为 Main() 中的参数。

0 投票
1 回答
647 浏览

c# - 参数索引器的实际使用

最近,我发现索引器可以接受一个参数数组params

然后,您将能够:

但是,我从未在 .NET Framework 或任何第三方库中遇到过这种用法。为什么已经实施了?能够引入paramsindexer的实际用途是什么?

0 投票
1 回答
43 浏览

c# - 为什么将动态参数重新传递给 params 参数无法构建

将动态参数重新传递给带有 params 关键字的方法时,解决方案无法构建,我使用的是 .NET 4.6 和 VS2015,但以前版本的 .NET Framework 也会出现此问题。错误列表上没有产生错误,只有底部的“构建失败”消息。

这是我试图运行的示例代码:

有人可以解释第一次通话有什么问题吗?

编辑1:

我已经使用 Dave 提供的示例创建了一个新的解决方案,并且它可以毫无问题地构建。但在我的解决方案中,即使在“关闭、清理和构建”之后问题仍然存在。如果我传递一个字符串、一个对象、一个动态或其他任何东西都没有关系。在下图中,没有对方法的调用,并且解决方案仍然没有构建。

在此处输入图像描述

0 投票
1 回答
555 浏览

c# - 带有 params 数组参数的 WCF 操作合同

我认为这家伙和我有同样的问题,但我需要澄清一下:

带参数的 wcf 服务

无论如何,我正在尝试编写一个 WCF 操作协定,它采用与 String.Format 相同的方式接收字符串,使用 params 对象数组和格式化字符串。这样,我可以这样调用操作:

而不是这样做:

基本上,操作合约方法需要一个字符串,但我只是希望能够以格式化的形式传递字符串以方便。它适用于普通方法,因为我可以显式地创建函数,但是 WCF 提出了我必须首先以接口形式编写它的挑战。另一个人说不是所有的对象都是可序列化的。是否可以这样做?