繁体   English   中英

Visual Studio C# 查看 output

[英]Visual Studio C# view output

通过字符串去重工作,发现当我重建并运行控制台时,控制台关闭并且我看不到字符串是什么。

using System;
using System.Collections.Generic;
using System.Linq;

namespace StringPrintDuplicates
{
class Program
{
    public static void DedupString(List<string> duplicatesString)
    {
        List<string> distinctList = duplicatesString.Distinct().ToList();
        foreach(string deduped in distinctList) {
            Console.WriteLine("{0}",deduped);
        }
    }
    static void Main()
    {
        List<string> list = new List<string>();
        list.Add("t");
        list.Add("a");
        list.Add("l");
        list.Add("k");
        list.Add("j");
        list.Add("l");
        list.Add("l");
        list.Add("k");
        list.Add("k");
        list.Add("s");
        list.Add("s");
        list.Add("h");
        list.Add("h");
        list.Add("o");
        list.Add("e");
        Console.WriteLine("The input is: {0} ", list.ToString());
        DedupString(list);
    }
   }
 }

当我运行它时,我没有收到错误,并且 output 应该是列表中重复的字母。 我正在使用 2019 并配置为在调试时停止控制台,也不使用“只是我的代码”,但我什么也看不到。 这应该返回“lksh”。

StyleZ 和 Chandru 是正确的 -。 顺便说一句,从 C#3 开始,您可以像这样初始化列表:

var list = new List<string>() { "t", "a", "l", "k", "j", "l", "l", "k", "k", "s", "s", "h", "h", "o", "e" };

这可能更容易书写和阅读。

在我注意到代码后,我立即看到了多个问题。

  1. Distinct()是删除所有重复项的关键字
  2. 您的list.ToString()肯定不起作用,原因是您想将所有字符串连接在一起。 为此,您应该使用Aggregate()

如果你真的想只返回那些重复的,你想做这样的事情:

using System;
using System.Collections.Generic;
using System.Linq;


namespace ConsoleApp1
{
    class Program
    {
        public static void DedupString(List<string> duplicatesString)
        {
            List<string> distinctList = duplicatesString.Distinct().ToList();
            foreach(string deduped in distinctList) {
                Console.Write("{0}",deduped);
            }
            Console.WriteLine("");
        }

        public static void DuplicitsOnly(List<string> duplicatesString)
        {
            var distinctList = duplicatesString.GroupBy(x => x).Where(x => x.Count() > 1).Select(x => x.Key).ToList();
            foreach(string deduped in distinctList) {
                Console.Write("{0}",deduped);
            }
            Console.WriteLine("");
        }

        static void Main()
        {
            List<string> list = new List<string>();
            list.Add("t");
            list.Add("a");
            list.Add("l");
            list.Add("k");
            list.Add("j");
            list.Add("l");
            list.Add("l");
            list.Add("k");
            list.Add("k");
            list.Add("s");
            list.Add("s");
            list.Add("h");
            list.Add("h");
            list.Add("o");
            list.Add("e");
            Console.WriteLine("The input is: {0} ", list.Aggregate("", (x, y) => x + y));
            DedupString(list);
            DuplicitsOnly(list);
        }
    }
}

另外,关于控制台关闭......我遇到了同样的问题......在右下角,你应该看到“应用程序输出”......我不知道如何确定它,但这是我找到的方式控制台:) (或者只是粉碎一个 ReadLine(); 在文件的 en ......那个也应该工作)

替代方法(可能更简单) 1)您可以修改 DedupString 方法,如下所示,仅显示重复条目:

    public static void DedupString(List<string> duplicatesString)
    {
        List<string> distinctList = duplicatesString.Distinct().ToList();
        foreach (string deduped in distinctList)
        {                
            if(duplicatesString.FindAll(x => x.Equals(deduped)).Count > 1)
            {
                Console.WriteLine("{0}", deduped);
            }
        }
    }

2) 添加Console.ReadLine(); Main()的末尾以防止控制台关闭。 只有在按下回车键后,控制台才会关闭。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM