【问题标题】:How do I pass a filestream variable to another method?如何将文件流变量传递给另一个方法?
【发布时间】:2020-06-20 20:59:43
【问题描述】:

如何将我的文件流从 openXaml() 传递到 timedEvent()

方法1

    private void openXaml()
    {
        FileStream  fs = new FileStream(path, FileMode.Open);       
    }

方法2(不能添加重载)

private void timedEvent()
{ 
Grid page = (Grid)XamlReader.Load(fs);
}

我在方法 2 中有文件流 var,但我一直遇到问题,因为它是一个定时事件。所以现在,我需要弄清楚如何将文件流从方法 1 传递给方法 2。

【问题讨论】:

    标签: c# function methods overloading filestream


    【解决方案1】:

    我假设调用这两个方法的是您自己的代码,您可以简单地从第一个方法返回文件流,将其作为变量保留在调用代码中,并将其作为参数传递给第二个方法。

    private FileStream openXaml()
    {
        return new FileStream(path, FileMode.Open);       
    }
    
    private void timedEvent(FileStream stream)
    { 
        Grid page = (Grid)XamlReader.Load(fs);
    }
    
    private void Caller() 
    {
       var stream = openXaml();
       timedEvent(stream);
    
       // or
       timedEvent(openXaml);
    }
    

    编辑

    如果满足以下条件,这种代码将起作用:

    • 这两个方法在同一个类中。

    • 您在整个过程中使用的是同一个对象。

    • 您确保在 timedEvent 之前调用 openXaml。 (我添加了一个空检查以防万一)

      public class Example 
      { 
         private FileStream _filestream;
      
         private void openXaml()
         {
            _fileStream = new FileStream(path, FileMode.Open);       
         }
      
         private void timedEvent()
         { 
            if (_fileStream != null) 
            {
               Grid page = (Grid)XamlReader.Load(_fileStream);
            }
         }
      }
      

    【讨论】:

    • 谢谢,但很遗憾我无法为 timedEvent() 添加重载
    • 如果您不能触摸该方法(或者您无法控制它的调用方式)但两个方法都在同一个类中,您可以在该类中使用私有字段。 openXaml 将填充该字段,而 timedEvent 将使用该字段。
    • 谢谢,但我不知道该怎么做。
    • 类似这样的东西:private FileStream fs = null; private void openXaml() { fs = new FileStream(path, FileMode.Open); } private void timedEvent() { Grid page = (Grid)XamlReader.Load(fs); } fs 的范围是整个类。
    • 我编辑我的答案以添加我的评论和来自 Gargi D. Chakravarty 的评论。
    猜你喜欢
    • 2015-05-22
    • 2012-12-21
    • 2019-02-01
    • 2021-09-28
    • 1970-01-01
    • 2017-07-29
    • 1970-01-01
    • 1970-01-01
    • 2011-04-27
    相关资源
    最近更新 更多