C# 参数1:无法从System.IO.FileInfo转换为';字符串'; 使用系统; 使用System.Collections.Generic; 使用System.IO; 使用System.Linq; 名称空间FunkcjaSpilit { 班级计划2 { 静态int_MinWordLength=7; 静态void Main() { DirectoryInfo filepath=newdirectoryinfo(@“D:\project_IAD”); FileInfo[]Files=filepath.GetFiles(“*.sgm”); List firstone=新列表(); foreach(文件中的文件信息文件) { int longWordScont=CalculateLongWordScont(文件,_MinWordLength); Console.WriteLine(“W tekscie numer:“+firstone.IndexOf(file)+”liczba długich słóW到“+longWordScont”); } Console.ReadLine(); } 私有静态int-CalculateLongWordScont(文件信息文件,int-minWordLength) { 返回文件.Split(“”).Where(wordInText=>wordInText.Length>=minWordLength.Count(); } } }

C# 参数1:无法从System.IO.FileInfo转换为';字符串'; 使用系统; 使用System.Collections.Generic; 使用System.IO; 使用System.Linq; 名称空间FunkcjaSpilit { 班级计划2 { 静态int_MinWordLength=7; 静态void Main() { DirectoryInfo filepath=newdirectoryinfo(@“D:\project_IAD”); FileInfo[]Files=filepath.GetFiles(“*.sgm”); List firstone=新列表(); foreach(文件中的文件信息文件) { int longWordScont=CalculateLongWordScont(文件,_MinWordLength); Console.WriteLine(“W tekscie numer:“+firstone.IndexOf(file)+”liczba długich słóW到“+longWordScont”); } Console.ReadLine(); } 私有静态int-CalculateLongWordScont(文件信息文件,int-minWordLength) { 返回文件.Split(“”).Where(wordInText=>wordInText.Length>=minWordLength.Count(); } } },c#,C#,运行此代码后,出现错误: (局部变量)文件信息文件 CS 1503:参数1:无法从System.IO.FileInfo转换为“字符串” 如何修复它?我发现代码中有两个问题。这两种情况都是因为不理解FileInfostruct的用途。我将修复其中一个错误,让您从我的修复中学习,自己完成第二个错误 using System; using System.Collections.Generic; using System.IO; using System.Linq; namespace Funkcja

运行此代码后,出现错误: (局部变量)文件信息文件 CS 1503:参数1:无法从System.IO.FileInfo转换为“字符串”
如何修复它?

我发现代码中有两个问题。这两种情况都是因为不理解
FileInfo
struct的用途。我将修复其中一个错误,让您从我的修复中学习,自己完成第二个错误

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

namespace FunkcjaSpilit
{

    class Program2
    {

        static int _MinWordLength = 7;
        static void Main()
        {
            DirectoryInfo filePaths = new DirectoryInfo(@"D:\project_IAD");
            FileInfo[] Files = filePaths.GetFiles("*.sgm");
            List<string> firstone = new List<string>();



            foreach (FileInfo file in Files)
            {
                int longWordsCount = CalculateLongWordsCount(file, _MinWordLength);

                Console.WriteLine("W tekscie numer: " + firstone.IndexOf(file) + " liczba długich słów to " + longWordsCount);
            }
            Console.ReadLine();
        }

        private static int CalculateLongWordsCount(FileInfo file, int minWordLength)
        {
            return file.Split(' ').Where(wordInText => wordInText.Length >= minWordLength).Count();
        }

    }
}
您也可以使用
File.ReadAllText()
来实现这一点,它会更简单,更像原始代码,但我更喜欢
ReadLines()
至少能提供一些保护,防止大型文件破坏内存

另一个问题在这个表达式中:

private static int CalculateLongWordsCount(FileInfo file, int minWordLength)
{
    return File.ReadLines(file.FullName).
        Select(line => line.Split(' ').Count(word => word.Length > minWordLength)).
        Sum();
}

但是,我还是把这个问题留给您来解决,这样您一定会了解如何使用
FileInfo
struct。与
FileInfo
问题不同,此表达式也将始终返回
-1
,因为从未将任何数据添加到
firstone
列表。

file.Split(“”)
=>
f.FullName.Split(“”)
f.Name.Split(“”)
。或者您可以直接使用
Directory.GetFiles()
返回
string[]
thx,这对带有“Split”的行很有帮助,但是25行中仍然会出现“file”问题。您认为
FileInfo文件
变量包含什么?提示:不仅仅是文件名。这也不是文件的内容,“第25行”是什么?错误到底发生在哪里?@Alejandro我相信这是
Console.WriteLine()
语句。这是文件信息被错误使用的另一个地方。非常感谢)
firstone.IndexOf(file)