问题标签 [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.
c# - 为什么要编译这段代码?
假设我定义了一个这样的方法:
如果我尝试这样调用它,显然我得到一个错误并且代码将无法编译:
方法 'ListInts' 有一个参数,但使用 0 个参数调用
但是当我像这样更改方法定义时:
没有错误。我很好奇为什么会这样?为什么第二个代码编译没有任何错误?params
当我们使用关键字时,幕后会发生什么?
c# - 可以区分什么都没有传递,或者一个 null 传递给 F(params String[] values)?
我有一个功能
它充当所有Item
s 的过滤器。
因此,如果我调用 eg Filter("prop1")
,那么所有作为第一个条目的Item
s"prop1"
都将匹配它们的属性。
如果我调用,则应返回Filter()
所有s 。Item
我还需要能够匹配null
值。因此,例如现在我可以调用Filter(null, null)
所有Item
snull, null
作为它们的第一个属性将被匹配。
除了我打电话时,所有这些都有效Filter(null)
。它将以与 相同的方式解释Filter()
,但意图是前者应返回所有Item
snull
作为其第一个属性,而后者应返回所有Item
s。
我尝试定义一个重载来处理这个
但是Ambiguous Invocation
当我调用Filter(null)
.
c# - 在 C# 中同时具有特定参数和 params 方法重载的好处
在 .NET 框架中有许多示例,其中一个方法有多个重载,其中一些使用特定数量的参数,然后params
是使用关键字的最终“catch all”。常见的例子是在String
课堂上,例如:
我想知道为什么有这么多这些方法重载是否有特殊原因?起初我认为这可能与性能有关;这个 SO 问题的问题和答案 -在 C# 中使用参数的成本- 会建议这样做。
但是,我开始使用Reference Source网站深入研究 .NET 源代码。我在String 类源代码中注意到了这一点:
String.Concat()
实际上根据使用了多少固定参数运行不同的代码——在我看来这肯定是一种优化。String.Format()
但是似乎只是提供了 mainparam
方法的包装器 - 请参阅下面的释义代码:
那么是否有性能优势,或者这只是为了方便,或者两者兼而有之?在上面的特定情况下,我没有看到任何明显的好处,它似乎只是重复工作。
c# - 如何在 C# 中使用 params 关键字和调用者信息?
我正在尝试将 C# 5.0 调用方信息与 C# params 关键字结合起来。目的是为日志框架创建一个包装器,我们希望记录器像 String.Format 一样格式化文本。在以前的版本中,该方法如下所示:
我们这样称呼它:
现在,我们要捕获调用者信息并记录它。所以签名变成:
这不会编译,因为参数必须是最后一个参数。所以我试试这个:
有没有办法在不提供 sourceMembername 或将 messageArgs 参数显式分配为命名参数的情况下调用它?这样做违背了 params 关键字的目的:
有没有办法做到这一点?似乎传递调用者信息的“hacky”方式排除了使用 params 关键字。如果 C# 编译器认识到调用者成员信息参数根本不是真正的参数,那就太棒了。我认为没有必要明确地传递它们。
我的备份将是跳过 params 关键字,调用者将不得不在最后一个示例中使用长签名。
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.
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
c# - 命名空间问题(缺少 }?)并将参数传递给显示数组的方法
我的代码有两个问题:
1- 我在 Main() 中使用 Console.Writeline 时遇到奇怪的语法错误,我认为我缺少右花括号 '}'
2- 在 Main() 之后,我似乎无法弄清楚我的第一个方法。它应该是一个简单的 void 方法来编写数组的元素,但 Visual Studio 似乎认为它是错误中的类或命名空间。
谁能发现我哪里搞砸了?
编辑:谢谢大家!我忘了重命名那里的一些变量和方法,但主要问题是缺少;和不必要的数据类型作为 Main() 中的参数。
c# - 参数索引器的实际使用
最近,我发现索引器可以接受一个参数数组params
:
然后,您将能够:
但是,我从未在 .NET Framework 或任何第三方库中遇到过这种用法。为什么已经实施了?能够引入params
indexer的实际用途是什么?
c# - 带有 params 数组参数的 WCF 操作合同
我认为这家伙和我有同样的问题,但我需要澄清一下:
无论如何,我正在尝试编写一个 WCF 操作协定,它采用与 String.Format 相同的方式接收字符串,使用 params 对象数组和格式化字符串。这样,我可以这样调用操作:
而不是这样做:
基本上,操作合约方法需要一个字符串,但我只是希望能够以格式化的形式传递字符串以方便。它适用于普通方法,因为我可以显式地创建函数,但是 WCF 提出了我必须首先以接口形式编写它的挑战。另一个人说不是所有的对象都是可序列化的。是否可以这样做?