【发布时间】:2018-08-01 07:08:45
【问题描述】:
我尝试创建一个扩展方法来测试流读取器是否可以读取数据并返回一个布尔值。
我的扩展方法代码:
using System.IO;
namespace ExtensionMethods
{
public static class StreamReaderExtension
{
public static object isReady(this StreamReader sr)
{
if ((sr.ReadLine()) != null)
{
return true;
} else
{
return false;
}
}
}
}
我想使用如下图:
StreamReader sr = new StreamReader(tcpClient.GetStream(), Encoding.ASCII);
if (sr.isReady() == true)
{
//Do something
}
但 Visual Studio 告诉我此错误消息:运算符“==”不能应用于“对象”和“布尔”类型的操作数
我错过了什么?
抱歉英语不好。
【问题讨论】:
-
为什么这个函数返回一个
object? -
您的方法的返回类型设置为
object。尽管您返回 true 和 false,但它们不是作为布尔值返回,而是作为对象返回。 -
C#使用CAMEL CASE?
-
您的返回逻辑可以简化为:
return sr.ReadLine() != null; -
不要这样做。你的方法有副作用。您丢弃了您读取的流的第一行。我感觉到了灾难!
标签: c# methods boolean streamreader