C#中不存在返回的变量

时间:2015-11-27 15:08:01

标签: c# xml class xml-parsing

我在一个名为ParseByXML()的函数中定义了一个dataTable“A”。但返回的“A”不能被另一个独立的函数ParseByLinq()使用。是否有任何解决方案可以避免“在当前环境中不存在”?

namespace XmlParsers.Models
{
  public static class XMLParsers
  {
    public static DataTable ParseByXML()
    {
      var A = new DataTable();
      ...
      return A;
    }

    public static DataTable ParseByLinq()
    {
      var B = from row in A 
              ...
      return B;
    }
  }
}  

5 个答案:

答案 0 :(得分:2)

ParseByLinqA一无所知,因为它是在另一种方法中定义的。您可以将参数添加到ParseByLinq,如下所示:

public static DataTable ParseByLinq(DataTable A) { /* ... */ }

或者在类中创建一个静态成员:

public static class XMLParsers
{
    static DataTable A;

    public static DataTable ParseByXML()
    {
        A = new DataTable();
        ...
        return A;
    }
}

现在,您可以从A - 方法访问ParseByLinq。但是,您必须先调用ParseByXML以确保A实际设置为任何内容。

答案 1 :(得分:0)

ParseByLinq需要接受数据表作为其参数。然后,当您从ParseByXML收到数据表时,您可以将其发送到ParseByLinq。

答案 2 :(得分:0)

你不能在你的第二个功能中使用A而不知道从哪里得到它。你必须调用你的函数,它将使用你的PareByLinq函数返回A或者将A in作为参数传递,例如:

public static DataTable ParseByLinq()
{
  var A = ParseByXML();
  var B = from row in A 
          ...
  return B;
}

public static DataTable ParseByLinq(DataTable A)
{
  var B = from row in A 
          ...
  return B;
}

并在调用它的代码中执行以下操作:

var A = ParseByXML();
ParseByLinq(A);

答案 3 :(得分:0)

您的类XMLParsers上不存在您的变量A.所以这样做就是改变你的方法

  public static DataTable ParseByLinq()
    {
      var B = from row in ParseByXML()
          ...    
      return B;
    }

如果需要,您可以将两种方法保持为静态。但是这篇文章中的其他方法还可以

答案 4 :(得分:0)

2种方式:

namespace XmlParsers.Models
{
  public static class XMLParsers
  {
    private static DataTable A;

    public static void ParseByXML()
    {
      A = new DataTable();
      ...
    }

    public static DataTable ParseByLinq()
    {
      var B = from row in A 
              ...
      return B;
    }
  }
}  

或者

namespace XmlParsers.Models
{
  public static class XMLParsers
  {
    public static void ParseByXML()
    {
      A = new DataTable();
      ...
      return A;
    }

    public static DataTable ParseByLinq(DataTable A)
    {
      var B = from row in A 
              ...
      return B;
    }
  }
}