[英]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" };
这可能更容易书写和阅读。
在我注意到代码后,我立即看到了多个问题。
Distinct()
是删除所有重复项的关键字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.