【问题标题】:How to pass String value to Collection? in C#如何将字符串值传递给集合?在 C# 中
【发布时间】:2015-07-17 13:28:17
【问题描述】:

这是我的代码:

List<string> deviceScreenshot=new List<string>(); 
List<string> fiddlerScreenshot=new List<string>();

if(string.IsNullOrEmpty(summary[3].ToString())==false)
    deviceScreenshot=summary[3];
else
    deviceScreenshot="Screenshot not found";

if(string.IsNullOrEmpty(summary[4].ToString())==false)
    fiddlerScreenshot=summary[4];
else
    fiddlerScreenshot="Screenshot not found";

我收到以下错误消息!

无法将类型“字符串”隐式转换为 'System.Collections.Generic.List' (CS0029) - D:\automation\OmnitureStatistics\OmnitureStatistics\TeardownUserCode.cs:144,23

请告诉我解决方案!

【问题讨论】:

  • 什么是deviceScreenshot
  • 是列表 - List deviceScreenshot=new List(); List fiddlerScreenshot=new List();
  • 如果 deviceScreenshot 是集合,那么您可以像这样添加 'deviceScreenshot.add(summary[3]);`
  • 与此处的问题无关,但您可以使 if 条件看起来像 if(!string.IsNullOrEmpty(summary[3].ToString())) 而不是 if(string.IsNullOrEmpty(summary[3].ToString())==false) 以使其看起来更好看。
  • 嗨@Rahul,它真的有效.. 谢谢:)... 'deviceScreenshot.add(summary[3]);' 之间有什么区别和 'deviceScreenshot=summary[3];'

标签: c# .net list collections ranorex


【解决方案1】:

您必须使用List&lt;T&gt;Add() 方法,如下所示。

  List<string> deviceScreenshot=new List<string>();
  List<string> fiddlerScreenshot=new List<string>();


  if(string.IsNullOrEmpty(summary[3].ToString())==false)
      deviceScreenshot.Add(summary[3]);
  else
      deviceScreenshot.Add("Screenshot not found");

  if(string.IsNullOrEmpty(summary[4].ToString())==false)
      fiddlerScreenshot.Add(summary[4]);
  else
      fiddlerScreenshot.Add("Screenshot not found");

Here's the MSDN link for more information on List

【讨论】:

  • @JonSkeet 感谢更新
  • 这段代码无法编译! deviceScreenshot.Add(deviceScreenshot=summary[3]);
【解决方案2】:

您必须使用 List 类的 Add() 方法。这就是您将项目添加到列表的方式。

if(string.IsNullOrEmpty(summary[3].ToString())==false)
    deviceScreenshot.Add(summary[3]);
else
    deviceScreenshot.Add("Screenshot not found");

if(string.IsNullOrEmpty(summary[4].ToString())==false)
    fiddlerScreenshot.Add(summary[4]);
else
    fiddlerScreenshot.Add("Screenshot not found");

【讨论】:

    【解决方案3】:

    您可以将逻辑移至辅助方法并将静态字符串保存在资源文件中。

    如果summary是一个list或者array如果是string,那么你不需要调用ToString()。

    class Program
    {
        static void Main(string[] args)
        {    
            new Program().AddStringToCollection();
        }             
    
        private void AddStringToCollection()
        {
            var summary = new string[] {"A", "B", "C", "", "D"};
    
            var deviceScreenshot = new List<string>();
            var fiddlerScreenshot = new List<string>();
    
            AppendExceptWhiteSpace(deviceScreenshot, summary[3]);
            AppendExceptWhiteSpace(fiddlerScreenshot, summary[4]);
        }
    
        //move to a resource file if possible
        const string NotFoundText = "Screenshot not found";
    
        //in a utility class this could also be an extension method
        private void AppendExceptWhiteSpace(List<string> list, string value)
        {
            //not sure if you want empty strings, otherwise change back to IsNullOrEmpty
            string text = string.IsNullOrWhiteSpace(value) 
                    ? NotFoundText 
                    : value;
    
            list.Add(text);
        }    
    }
    

    【讨论】:

      【解决方案4】:

      我不确定什么是“摘要”,没有提及,所以我将其视为参数列表。

      1. 您的比较总是会做同样的事情,因为您缺少“”: summary[3].ToString())=="false" // 字符串到字符串。

      2. 添加到列表应该是这样的: deviceScreenshot.Add(summary[3].ToString()); 我知道大多数答案,但不知何故他们在这里忘记了“ToString()”(除非它是一个字符串列表。在这种情况下,在这两种情况下都删除“ToString()”。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-07-22
        • 2013-05-24
        • 1970-01-01
        • 2011-11-26
        • 1970-01-01
        • 2023-03-15
        相关资源
        最近更新 更多