使用C#中的I/O按字母顺序排列

本文关键字:顺序 排列 中的 使用 | 更新日期: 2023-09-27 17:58:30

我正在尝试使用一个I/O,并使用一个名为"按字母顺序"的方法按字母顺序对输入文件进行排序,这有一个编译错误

(35,42):错误CS1061:"string"不包含"ToArray"的定义,并且找不到接受"string"类型的第一个参数的扩展方法"ToArray"(是否缺少using指令或程序集引用?)

我能做些什么来解决这个问题?

using System;
using System.IO;
namespace examplefile
{
    class examplefile
    {
        static void Main(string[] args)
        {
            StreamWriter writer = null;
            writer = new StreamWriter(@"C:'C#Files'OutputWrite2.txt");
            Console.SetOut(writer);
            Console.SetIn(new StreamReader(@"C:'C#Files'InputRead2.txt"));
            string letters;
            while ((letters = Console.ReadLine()) != null)
            writer.Close();

            StreamWriter standardOutput = new StreamWriter(Console.OpenStandardOutput());
            standardOutput.AutoFlush = true;
            Console.SetOut(standardOutput);
            Console.WriteLine("Sorted all letters alphabetically and wrote to output file.");
        }
        public static String alphabetize(string letters)
        {
            char[] alphabetize = letters.ToArray();
            Array.Sort(alphabetize);
            return new string(alphabetize);
        }
    }
}

使用C#中的I/O按字母顺序排列

您的问题在这里:

char[] alphabetize = letters.ToArray();

正如你得到的错误清楚地表明:

"string"不包含"ToArray"的定义,也没有扩展名接受"string"类型的第一个参数的方法"ToArray"可以是找到

此错误消息分为两部分。第一部分指出string没有ToArray()方法。由于lettersstring,您不能在其上调用ToArray()。请尝试以下操作:

char[] alphabetize = letters.ToCharArray();

错误的第二部分告诉您上下文中没有定义ToArray扩展方法;然而,System.Linq名称空间在接口IEnumerable<char>上具有扩展方法ToArray<TSource>()string实现IEnumerable<char>,因此如果在文件中包含System.Linq命名空间,则可以调用扩展方法ToArray<TSource>():

// at the top of your file with your other includes.
using System.Text;
// NOW you can do this:
char[] alphabetize = letters.ToArray();