尝试在 C# 中使用 StreamReader 时尝试了解错误 CS0120
Trying to understand error CS0120 when trying to use StreamReader in C#
我目前正在编写一些代码来生成包含来自 .txt 文件的成绩的图表。我正在尝试使用 StreamReader 来计算字符的频率(例如,如果 .txt 文件包含 ADCBCBBBADEBCCBADBAACDCCBEDCBACCFEABBCBBBCCEAABCBB,我希望它显示 9 个 A、17 个 B、14 个 C、5 个 D、4 个 E 和 1 个 F)。我包括代码,还包括 1 个错误和编译代码时收到的警告:
example.cs(19,106): warning CS0642: Possible mistaken empty statement
example.cs(20,27): error CS0120: An object reference is required for the non-static field, method, or property 'System.IO.TextReader.ReadLine()' c:\Windows\Microsoft.NET\Framework\v4.030319\mscorlib.dll: (location of symbol related to previous error)
我看到了,一头雾水,想去理解MSDN的解释,结果更糊涂了。请有人向我解释我做错了什么并帮助我使我的代码正常工作。谢谢!
`using System;
using System.IO;
using System.Linq;
namespace Assessment2
{
class fileAccess
{
static void Main(string[] args)
{
using (StreamReader sr = new StreamReader(@"C:\Users\User\Desktop\Grades\grades_single.txt"));
string line = StreamReader.ReadLine();
int countOfAs = line.Count(x => x == 'A');
}
}
}
MSDN 在 CS0120 上没有那么明确:
In order to use a non-static field, method, or property, you must first create an object instance.
您确实创建了一个对象实例 sr
,但它仍然无法编译。那是因为您需要对该对象引用 (sr.ReadLine()
) 调用该方法,而不是对类型(StreamReader.ReadLine()
) 调用该方法。
您的 using()
语句以分号 (;
) 结束,这意味着您不能在该行之后使用它。删除分号并将以下语句括在大括号 ({ }
) 中,这样就可以使用 sr
:
using (StreamReader sr = new StreamReader(@"path"))
{
string line = sr.ReadLine();
}
我目前正在编写一些代码来生成包含来自 .txt 文件的成绩的图表。我正在尝试使用 StreamReader 来计算字符的频率(例如,如果 .txt 文件包含 ADCBCBBBADEBCCBADBAACDCCBEDCBACCFEABBCBBBCCEAABCBB,我希望它显示 9 个 A、17 个 B、14 个 C、5 个 D、4 个 E 和 1 个 F)。我包括代码,还包括 1 个错误和编译代码时收到的警告:
example.cs(19,106): warning CS0642: Possible mistaken empty statement
example.cs(20,27): error CS0120: An object reference is required for the non-static field, method, or property 'System.IO.TextReader.ReadLine()' c:\Windows\Microsoft.NET\Framework\v4.030319\mscorlib.dll: (location of symbol related to previous error)
我看到了,一头雾水,想去理解MSDN的解释,结果更糊涂了。请有人向我解释我做错了什么并帮助我使我的代码正常工作。谢谢!
`using System;
using System.IO;
using System.Linq;
namespace Assessment2
{
class fileAccess
{
static void Main(string[] args)
{
using (StreamReader sr = new StreamReader(@"C:\Users\User\Desktop\Grades\grades_single.txt"));
string line = StreamReader.ReadLine();
int countOfAs = line.Count(x => x == 'A');
}
}
}
MSDN 在 CS0120 上没有那么明确:
In order to use a non-static field, method, or property, you must first create an object instance.
您确实创建了一个对象实例 sr
,但它仍然无法编译。那是因为您需要对该对象引用 (sr.ReadLine()
) 调用该方法,而不是对类型(StreamReader.ReadLine()
) 调用该方法。
您的 using()
语句以分号 (;
) 结束,这意味着您不能在该行之后使用它。删除分号并将以下语句括在大括号 ({ }
) 中,这样就可以使用 sr
:
using (StreamReader sr = new StreamReader(@"path"))
{
string line = sr.ReadLine();
}