C# 带“的去浮代码”;使用;
我正在尝试尽可能地缩短和完善我的代码。我的一个想法是从一行代码中返回一个字符串,使用C# 带“的去浮代码”;使用;,c#,coding-efficiency,C#,Coding Efficiency,我正在尝试尽可能地缩短和完善我的代码。我的一个想法是从一行代码中返回一个字符串,使用using,以确保在事务完成时访问的文件再次可用。我的目标是尽可能接近一行代码,但是我很难找到解决字符串不变性的方法 以下代码无效: string sample() { try{ using( string example = (new StreamReader (new FileStream
using
,以确保在事务完成时访问的文件再次可用。我的目标是尽可能接近一行代码,但是我很难找到解决字符串不变性的方法
以下代码无效:
string sample()
{
try{ using( string example = (new StreamReader
(new FileStream
("", FileMode.Open, FileAccess.Read),
Encoding.UTF8).ReadToEnd())) }
//I haven't quite worked out returning the value yet, but this is irrelevant here
}
工作守则如下:
string sample()
{
FileStream fs = new FileStream("", FileMode.Open, FileAccess.Read);
try{
using(StreamReader rdr = new StreamReader(fs);
return rdr.ReadToEnd();
}
}
我可以通过执行以下操作轻松简化此过程:
string sample()
{
try
{
return (new StreamReader(new FileStream
("", FileMode.Open, FileAccess.Read),
Encoding.UTF8).ReadToEnd());
}
}
但是,这可能不会在交易完成后关闭文件(如果这是错误的,请让我知道)。这里有没有一种方法可以解决字符串的不变性问题,或者我正在寻找一种不可能的方法?看起来您需要一种方法来使用语句从
创建表达式。您可以创建一个函数:
public static T Use<TRec, T>(TRec resource, Func<TRec, T> f) where TRec : IDisposable
{
using(resource) { return f(resource); }
}
为什么如此需要一艘班轮?您正在失去可编辑性和易理解性这段代码试图做什么?它并没有消除浮肿或简化任何事情,而是更难阅读。try
块似乎也不起作用。为什么不使用单个文件或文件。ReadText
?这段代码实际上是在做File.ReadText
doesHow所做的:string content=System.IO.File.ReadAllText(filename,Encoding.UTF8)代码>?@Rahul我正在试验C#的工作方式,而不仅仅是为了实际使用而创造一些东西。我认为真正理解我在未来所做的事情是一种很好的做法。@ScarySpice在试图“简化事情”之前,你可能应该先了解C#是如何工作的。特别是如果您打算使用catch{}
来隐藏错误而不是处理错误,这就是编写错误的方式。也不需要FileStream
,它接受path@PanagiotisKanavos-在本例中是的,但看起来这个问题是关于使用而不是阅读文本。这个问题是关于理解C#语法和简化代码。这个Use
方法并不比使用(var s=new StreamReader(new FileStream(“,FileMode.Open,FileAccess.Read),Encoding.UTF8)返回s.ReadToEnd())编写短或简单;
string s = Use(new StreamReader(new FileStream("", FileMode.Open, FileAccess.Read), Encoding.UTF8), sr => sr.ReadToEnd());