首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >条件'using‘

条件'using‘
EN

Stack Overflow用户
提问于 2019-06-16 15:12:16
回答 3查看 793关注 0票数 0

我有以下代码,它将一个文件转换为一个内存流,然后将其写入磁盘。一切都很好,但是我现在仍然希望始终打开file_1进行读取,但根据用户的喜好打开memory_streamfile_2进行写入。

如果大括号会冲突,我如何才能让条件语句在这种情况下工作。

提前感谢您的帮助。

代码语言:javascript
复制
public static void ProcessFile()
{
   try
   {         
      using (Open file_1 for reading)
      using (Open memory_stream for writing)
      {
         ...
EN

回答 3

Stack Overflow用户

发布于 2019-06-16 15:29:45

像这样的吗?

代码语言:javascript
复制
public static void ProcessFile()
{
    using (Open_file_1_for_reading)
    {
        if (condition)
        {
            using (Open_memory_stream_for_writing)
            {
                // ...
            }
        }
    }
}
票数 1
EN

Stack Overflow用户

发布于 2019-06-16 15:37:17

首先,using只是try...finally的语法糖,在finally中,调用IDisposable对象的Dispose方法(在using中使用),例如

代码语言:javascript
复制
try
{
  using(...){...}
}

没有什么意义,因为它将被视为

代码语言:javascript
复制
try
{
  try{...}
  finally{dispose of an object}
}

我认为你的问题很简单,只要做:

代码语言:javascript
复制
if(user preference)
{
  using(writing){...}
}
else
{
  using(reading){...}
}
票数 0
EN

Stack Overflow用户

发布于 2019-06-16 15:45:41

我认为你应该为这两件事创建不同的方法。您还应该有一个处理写入的方法。这些不应该都由ProcessFile来完成。

代码语言:javascript
复制
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();
        }
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56616879

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档