Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.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#_String - Fatal编程技术网

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 }

这可能有点不必要,但我正在C#中寻找一种方法,将字符串转换为列表,并一次性将其传递给函数

假设我有一个函数,它获取字符串列表并将它们输出到控制台

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参数