C# 从字符串转换为列表<;字符串>;并在一行中传递给方法
这可能有点不必要,但我正在C#中寻找一种方法,将字符串转换为列表C# 从字符串转换为列表<;字符串>;并在一行中传递给方法,c#,string,C#,String,这可能有点不必要,但我正在C#中寻找一种方法,将字符串转换为列表,并一次性将其传递给函数 假设我有一个函数,它获取字符串列表并将它们输出到控制台 public static void PrintStrings( List<String> messages ) { foreach ( String message in messages ) { Console.WriteLine( message ); } //Do other things }
public static void PrintStrings( List<String> messages )
{
foreach ( String message in messages )
{
Console.WriteLine( message );
}
//Do other things
}
但它在Visual Studio中被标记为“PrintString的最佳重载匹配”具有一些无效参数。任何建议都很好 您可以使用
params
关键字来允许可变数量的参数:
public static void PrintStrings(params string[] messages )
{
foreach ( String message in messages )
{
Console.WriteLine( message );
}
//Do other things
}
现在,您可以传递一个string
s数组、一个string
、甚至多个string
s:
PrintStrings("hi");
PrintStrings("hi", "there");
PrintStrings(stringList.ToArray());
请注意,如果您已经有了列表
,那么这会降低效率。不过,最好的解决方法是创建一个重载,该重载接受单个字符串
,并相应地对其进行操作:
public static void PrintStrings(string myString) { ... }
最后,如果希望保留当前签名而不添加重载,可以在新的列表上调用该方法,如下所示:
PrintStrings(new List<string>() { myString });
PrintStrings(新列表(){myString});
您可以使用params
关键字来允许可变数量的参数:
public static void PrintStrings(params string[] messages )
{
foreach ( String message in messages )
{
Console.WriteLine( message );
}
//Do other things
}
现在,您可以传递一个string
s数组、一个string
、甚至多个string
s:
PrintStrings("hi");
PrintStrings("hi", "there");
PrintStrings(stringList.ToArray());
请注意,如果您已经有了列表
,那么这会降低效率。不过,最好的解决方法是创建一个重载,该重载接受单个字符串
,并相应地对其进行操作:
public static void PrintStrings(string myString) { ... }
最后,如果希望保留当前签名而不添加重载,可以在新的列表上调用该方法,如下所示:
PrintStrings(new List<string>() { myString });
PrintStrings(新列表(){myString});
尝试打印字符串(新列表(新字符串[]{“字符串”})代码>
或者创建一个接受单个字符串的PrintStrings重载
顺便说一句,我认为最好接受IEnumerable
而不是List
尝试PrintStrings(新列表(新字符串[]{“字符串”}))代码>
或者创建一个接受单个字符串的PrintStrings重载
顺便说一句,我认为最好接受IEnumerable
而不是List
您可以创建一个重载方法:
public static void PrintStrings( string message )
{
//Do other things
}
您可以创建一个重载方法:
public static void PrintStrings( string message )
{
//Do other things
}
编辑-或可能执行重载ie:
PrintStrings( "myMessage" );
public static void PrintStrings( string message )
{
AcutallyDoSomething( message );
}
public static void PrintStrings( List<String> messages )
{
foreach ( String message in messages )
{
AcutallyDoSomething( message );
}
//Do other things
}
private static void AcutallyDoSomething(string msg)
{
foreach ( String message in messages )
{
Console.WriteLine( message );
}
}
PrintStrings(“myMessage”);
公共静态无效打印字符串(字符串消息)
{
AcutallyDoSomething(消息);
}
公共静态无效打印字符串(列出消息)
{
foreach(消息中的字符串消息)
{
AcutallyDoSomething(消息);
}
//做其他事情
}
私有静态void AcutallyDoSomething(字符串msg)
{
foreach(消息中的字符串消息)
{
控制台写入线(消息);
}
}
编辑-或可能执行重载ie:
PrintStrings( "myMessage" );
public static void PrintStrings( string message )
{
AcutallyDoSomething( message );
}
public static void PrintStrings( List<String> messages )
{
foreach ( String message in messages )
{
AcutallyDoSomething( message );
}
//Do other things
}
private static void AcutallyDoSomething(string msg)
{
foreach ( String message in messages )
{
Console.WriteLine( message );
}
}
PrintStrings(“myMessage”);
公共静态无效打印字符串(字符串消息)
{
AcutallyDoSomething(消息);
}
公共静态无效打印字符串(列出消息)
{
foreach(消息中的字符串消息)
{
AcutallyDoSomething(消息);
}
//做其他事情
}
私有静态void AcutallyDoSomething(字符串msg)
{
foreach(消息中的字符串消息)
{
控制台写入线(消息);
}
}
打印字符串(新列表(){“myMessage”});
打印字符串(新列表(){“myMessage”});
PrintStrings(新列表(){“mystring”})
PrintStrings(新列表(){“mystring”})
假设您愿意修改现有的PrintStrings方法或创建重载方法,那么会有很多答案。可能需要提供Clarification。出现编译错误是因为“foo”.ToList()生成ListNot反对修改PrintStrings方法。寻找最小的答案,最好让我直接传递字符串。然后你就可以了。希望采用dlev建议的方法,即使用params arguments,假设您愿意修改现有的PrintStrings方法或创建重载方法,则会有很多答案。可能需要提供Clarification。出现编译错误是因为“foo”.ToList()生成ListNot反对修改PrintStrings方法。寻找最小的答案,最好让我直接传递字符串。然后你就可以了。希望采用dlev建议的方法,即使用params参数