我有以下代码,它将一个文件转换为一个内存流,然后将其写入磁盘。一切都很好,但是我现在仍然希望始终打开file_1进行读取,但根据用户的喜好打开memory_stream或file_2进行写入。
如果大括号会冲突,我如何才能让条件语句在这种情况下工作。
提前感谢您的帮助。
public static void ProcessFile()
{
try
{
using (Open file_1 for reading)
using (Open memory_stream for writing)
{
...发布于 2019-06-16 15:29:45
像这样的吗?
public static void ProcessFile()
{
using (Open_file_1_for_reading)
{
if (condition)
{
using (Open_memory_stream_for_writing)
{
// ...
}
}
}
}发布于 2019-06-16 15:37:17
首先,using只是try...finally的语法糖,在finally中,调用IDisposable对象的Dispose方法(在using中使用),例如
try
{
using(...){...}
}没有什么意义,因为它将被视为
try
{
try{...}
finally{dispose of an object}
}我认为你的问题很简单,只要做:
if(user preference)
{
using(writing){...}
}
else
{
using(reading){...}
}发布于 2019-06-16 15:45:41
我认为你应该为这两件事创建不同的方法。您还应该有一个处理写入的方法。这些不应该都由ProcessFile来完成。
private static void WriteToFile2() {
using (FileStream s = ...) { WriteToStream(s); }
}
private static void WriteToMemory() {
using (MemoryStream s = ...) { WriteToStream(s); }
}
private static void WriteToStrem(Stream s) {
...
}
public void ProcessFile() {
using (FileStream s = ...) { // file 1
...
if (...) {
WriteToFile2();
} else {
WriteToMemory();
}
}
}https://stackoverflow.com/questions/56616879
复制相似问题