Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何将多个参数传递为;“参数”;但在C中引用#_C#_.net_Parameters_Ref - Fatal编程技术网

C# 如何将多个参数传递为;“参数”;但在C中引用#

C# 如何将多个参数传递为;“参数”;但在C中引用#,c#,.net,parameters,ref,C#,.net,Parameters,Ref,我想知道是否有一种方法可以通过“params”传递任意数量的参数,但在C中引用# 我有一个函数,它返回一个字符串,该字符串在这个函数中被修改,如下所示: Main: var myWord = FormatWord(myWord); funct: public string FormatWord(string myWord) { // do something } Main: FormatWord(myWord1, myWord2, myWord3); funct: public v

我想知道是否有一种方法可以通过“params”传递任意数量的参数,但在C中引用#

我有一个函数,它返回一个字符串,该字符串在这个函数中被修改,如下所示:

Main:
var myWord = FormatWord(myWord);

funct:
public string FormatWord(string myWord)
{
    // do something
}
Main:
FormatWord(myWord1, myWord2, myWord3);

funct:
public void FormatWord(ref params string[] words)
{
    // do something
}
目前,有一个函数只接收一个参数,但将来可能会有多个参数,我不想将此函数用于每个字符串并分配返回值,我认为解决此问题的简单方法是发送任意数量的字符串引用参数,并对每个字符串执行相同的逻辑,看起来像这样:

Main:
var myWord = FormatWord(myWord);

funct:
public string FormatWord(string myWord)
{
    // do something
}
Main:
FormatWord(myWord1, myWord2, myWord3);

funct:
public void FormatWord(ref params string[] words)
{
    // do something
}
然后不管您作为参数传递多少个字符串,相同的逻辑将应用于它们

问题是你不能这样做,因为你会得到:

A parameter cannot have all the specified modifiers; there are too many modifiers on the parameter

有什么方法可以满足我的要求吗?

请记住,在通话中需要提到“ref”,而不仅仅是在声明中。如注释中所述,在这种情况下,将“ref”和“params”结合起来是没有意义的。

为什么不使用数组或列表来存储所有字符串变量,然后将其传递到方法中呢

例如:

Main:
var words = new List<string>() ;
words.add(myWord1);
words.add(myWord2);
words.add(myWord3);
FormatWord(words);

funct:
public void FormatWord(List<string> myWordList)
{
    // do something
}
Main:
var words=新列表();
添加(myWord1);
添加(myWord2);
添加(myWord3);
格式字;
职能:
公共void FormatWord(列表myWordList)
{
//做点什么
}

您能解释一下为什么要使用
ref
?我很确定您不能将
参数
ref
混用在一起;这毫无意义。您可以传入字符串数组(无论是显式传递,还是使用
params
)并返回数组。这可能就是您想要做的(或者,更好的是,返回一个
IEnumerable
)请看,您可以编写多个
FormatWord
重载,最多占用N个参数。hi@Jacob我想传递多个引用的字符串值,不管它是1还是40,因为这些字符串将应用相同的逻辑,但我担心的是,假设将来有40个字符串,然后使用这个函数将返回值分配给每个字符串,它将是40行代码,而不是,希望传递该函数中的每个引用字符串,并只填充函数中的值