C# 如何将多个参数传递为;“参数”;但在C中引用#
我想知道是否有一种方法可以通过“params”传递任意数量的参数,但在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
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行代码,而不是,希望传递该函数中的每个引用字符串,并只填充函数中的值