2015-11-27 73 views
0

我有一個名爲ParseByXML()的函數中定義的dataTable「A」。但返回的「A」不能被另一個獨立函數ParseByLinq()使用。有什麼解決方案可以避免「在當前情況下不存在」?C#中不存在返回的變量

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; 
    } 
    } 
} 
+1

這兩種方法都是靜態的。 「ParseByLinq()」沒有參數。 「ParseByLinq」應該以哪種方式識別您的「A」對象?您應該在靜態類中添加DataTable靜態對象。或者在「ParseByLinq」中添加輸入參數。 – Dmitriy

回答

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; 
    } 
    } 
} 
0

ParseByLinq需要接受一個datatable作爲它的參數。然後,當您從ParseByXML接收到數據表時,您可以將其發送給ParseByLinq。

0

你不能在你的第二個函數中使用A而不會以某種方式告訴它從哪裏得到。您必須調用你的函數會返回一個從withing您PareByLinq功能或傳遞,例如一個參數:

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); 
2

ParseByLinq不知道,因爲它是另一種方法定義約A什麼。你既可以將參數添加到ParseByLinq如下:

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

或者類中創建一個靜態成員:

public static class XMLParsers 
{ 
    static DataTable A; 

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

現在你可以從ParseByLinq - 方法訪問A。但是,您必須在前面呼叫ParseByXML以確保A實際上設置爲任何值。

0

您的變量A不存在於您的類XMLParsers中。因此,要做到這一點的方法是改變你的方法

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

如果你想,你可以留下你的兩個方法爲靜態。但其他的方式在這個崗位都OK