C# 方法重载与参数关键字

发布于 2024-10-13 04:30:26 字数 413 浏览 5 评论 0原文

我有一种方法:下面的相关部分

void foo(various parameters)
{
   tsk.run(various parameters);
}

现在 tsk.run 的参数需要这样间隔:

tsk.run(param 1 + " " param2 + " " param3);, etc depending on how many parameters.

参数将形成一个在命令行应用程序中使用的连续字符串。

最多有4个参数,所以最好为每个参数都做一个重载方法。或者有没有办法使用 Param 关键字获取参数并将它们添加到 tsk.run() 方法中。

是否值得使用 param[] 然后循环,连接成一个字符串,然后将其放入运行中?

I have a method: relevant part below

void foo(various parameters)
{
   tsk.run(various parameters);
}

Now the parameters with the tsk.run need to spaced as such:

tsk.run(param 1 + " " param2 + " " param3);, etc depending on how many parameters.

The parameters will form one continuous string that is used in a command line app.

At most, there will be 4 parameters, so is it best to do an overload method for each. Or is there a way using the Param keyword to take the parameters and add them to the tsk.run() method.

Would it be worth using param[] and then looping through, concatenating into a string and then put that into run?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

ま柒月 2024-10-20 04:30:26

你不需要循环:

void Foo(params string[] args)
{
    tsk.run(String.Join(" ", args));
}

You needn't loop:

void Foo(params string[] args)
{
    tsk.run(String.Join(" ", args));
}
香草可樂 2024-10-20 04:30:26

如果您知道参数的数量,请使用重载,因为它会更有效。

编译器将能够直接调用正确的方法,并且您可以分配默认值。

如果参数列表是动态创建的并且长度可以变化更多,请使用 params.

或者在您的示例中跳过参数并仅使用字符串列表或字符串数​​组。

If you know the number of arguments use overload as it will be more efficient.

The compiler will be able to directly call the right method and you can assign default values.

If the paramlist is created dynamically and can vary more in length, use params.

Or in you example skip params and just use a string list or string array.

挥剑断情 2024-10-20 04:30:26

那么您可以通过使用

(params object[] parameters)

then 内部方法创建一个 Strigbuilder 并以您所需的方式将列表中的每个参数附加到它。

不清楚您的参数是否都是字符串,或者它们的类型确实不同,并且应该使用对象签名。如果参数的类型不同,我认为对对象使用 params 方法会产生更多问题而不是帮助。

如果它们都是字符串,我认为 params 是这种情况的理想解决方案。

well you could do that by using

(params object[] parameters)

then inside method create a Strigbuilder and append each param from list to it in your required fashion.

Its unclear whether your parameters are all strings, or they are really various by type and object signature should be used. If parameters are different by type I think having params method with objects would create more problems than help.

If they are all strings I think params is ideal solution for this situation.

梦里梦着梦中梦 2024-10-20 04:30:26
void foo( params string[ ] parameters )
{
    StringBuilder sb = new StringBuilder( );

    foreach ( string parameter in parameters )
    {
        sb.Append( parameter );
        sb.Append( " " );
    }

    tsk.run( sb.ToString( ) );
}
void foo( params string[ ] parameters )
{
    StringBuilder sb = new StringBuilder( );

    foreach ( string parameter in parameters )
    {
        sb.Append( parameter );
        sb.Append( " " );
    }

    tsk.run( sb.ToString( ) );
}
梦魇绽荼蘼 2024-10-20 04:30:26

像这样:

void foo<T>(params T[] parameters)
{
    tsk.run(string.Join<T>(" ", parameters));
}

Like this:

void foo<T>(params T[] parameters)
{
    tsk.run(string.Join<T>(" ", parameters));
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文