c# - 如何处理重复的参数声明?

标签 c# methods parameters arguments language-features

所以是的,正如标题所说,有没有一种方法可以轻松处理重复的参数?

例如,假设我正在创建一个包含许多方法的类。假设大多数方法都采用相同的方法签名并且它相当长。编造的例子:

void Method(int x, int y, int z = 0, string label = null, isNeverGonnaGiveYouUp = true)

我知道您可以为类创建别名...

using Alias = System.Console;

我没有发现任何与方法参数类似的东西,也不知道我是否需要为所有内容(以及所有更改)重复复制和粘贴。或者也许可以使用宏或其他东西?虽然我不是一个宏观的人。

将其作为一种语言功能会很好。像...

using ArgList = params (int x, int y, int z = 0, string label = null, isNeverGonnaGiveYouUp = true)
void Method(ArgList)

或者在有长通用参数的情况下...

using GenArgList = params (Action<int, int, int, string, bool>)

也许还有泛型方法...

using Gen = typeof (int, int, int string, bool)
void Method<Gen>(/* parameters here */)

我确信与大多数其他情况一样,它要么不值得实现,要么有不应该实现的正当理由。 (或者也许我只是疯了,总的来说这是一个糟糕的主意。)但是复制/粘贴已经过时了。

谢谢。

编辑:关于“只是让它成为一个类”的论点,supercat 提出了一个有效的观点。在我的例子中,我正在制作一个将方法链接在一起的类,LINQ 样式并且每组参数可以不同。

最佳答案

您要求的是元编程功能,而 C# 几乎没有这些功能。

Lisp、C++ 和许多函数式语言可以满足您的要求,但我认为它不会很快在 C# 中实现。

您可以使用 T4 文本模板生成代码,但之后就只能靠自己了。

关于c# - 如何处理重复的参数声明?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25335160/

相关文章:

c# - 向元素添加 XML 属性

c# - 通过 https 从 C# 使用 POST 发布

java - 在字符串数组中搜索用户给定的字符

java - 具有许多参数的枚举

c - 如何忽略所有小于第一个参数值的输入,然后传递给数组/函数? (C语言)

c# - 视频文件流无法在 asp.NET Core 2.0 中的 Safari/iOS 设备上运行

c# - 代码合约警告

Javascript - 新方法

Ruby 知道 'myvar' 是 myvar 中的一个变量 = 0 如果 false

c++ - 以 qreal 引用作为参数的语法