2012-08-29 85 views
-4

我的函数返回值有一些问题。我想要做的是从XML_File获取元素值并返回该值,以便我可以在中使用它。C#winforms函数返回值

我试图处理XML_Array_Load函数,我得到了下面的错误。 (该尚未因为在其他函数的错误的测试)

XML_Array_Load功能错误:

Error 1 Since 'Program.Form1.XML_Array_Load(System.Collections.Generic.Dictionary, System.Collections.Generic.Dictionary)' returns void, a return keyword must not be followed by an object expression

C#代码:

static void XML_Array_Load(Dictionary<string, string> Data_Array, Dictionary<string, string> Elements_Array) 
    { 
     // XML File 
     String xmlfile = Data_Array["XML_File"]; 

     // XML Page Check 
     if (File.Exists(xmlfile)) 
     { 
      XmlDocument doc = new XmlDocument(); 
      // If Page Exist Load XML File 
      doc.Load(xmlfile); 

      foreach (KeyValuePair<string, string> Element in Elements_Array) 
      { 
       // Get Element From Dictionary Array 
       String Element_Name = Element.Key; 
       String Element_Type = Element.Value; 

       // Get Element_Name from XMLFile 
       String Value = String.Format("XMLFILE/{0}", Element_Name); 

       // Get Element_Name Value From XMLFile 
       XmlNode Element_Value = doc.SelectSingleNode(Value); 

       // Check If Element_Value Is Null Or Not 
       if (Element_Value != null) 
       { 
        return Element_Value; 
       } 

      } 
     } 
    } 


    private void Form1_Load(object sender, EventArgs e) 
    { 
     // Start Data Array 
     Dictionary<string, string> Data_Array = new Dictionary<string, string>(); 

     // XML_File path is come here 
     Data_Array.Add("XML_File", "../Debug/XMLFiles/Settings.xml"); 

     // This is the element what i need to get the value from XML_File 
     Elements_Array.Add("Active", ""); 

     // Send Arrays To Function and get function result 
     String Return_Value = XML_Array_Insert(Data_Array, Elements_Array); 

     // Here will setup textBox4.Text with the value 
     textBox4.Text = Return_Value.InnerText; 
    } 
+1

你希望返回什么,一个'XmlNode'或'串'? –

+3

不错的尝试。昨天,你已经赢得了大量的赞誉,用你的旧名字“matei zoc”提出了无构造/重复的问题。今天,你采取一个新的名字和开始相同的问题类型?极好。 – varg

回答

0

作为错误消息告诉您,该方法具有返回类型的void,这意味着它不返回任何内容。如果你想让它返回一些东西,那么你需要将void更改为你希望它返回的任何东西。

您的代码还有其他几个问题。你调用方法的地方似乎希望它返回一个字符串,但在方法本身中它返回一个XmlNode。您需要选择其中一个返回,并将这两个位置中的一个更改为与该选择一致。

您还可以在foreach循环中使用return声明。一个值只能是return,所以你最终要做的是返回集合的第一个非空值。那实际上是你想要的吗?这是一件很不寻常的事情。

2

你宣布你的方法为static void XML_Array_Load()void表示它不返回任何值。然后你试着返回一个值。

你不能那样做。如果你想让这个方法返回一个值,就这样声明它。

static XmlNode XML_Array_Load(...) 
0

1更换空返回类型为

static XmlNode XML_Array_Load(Dictionary<string, string> Data_Array, Dictionary<string, string> Elements_Array) 

2而在你的功能,以便在末尾添加回报,以确保所有路径返回值

... 
return null; 
} 

结果:

static XmlNode XML_Array_Load(Dictionary<string, string> Data_Array, Dictionary<string, string> Elements_Array) 
    { 
     // XML File 
     String xmlfile = Data_Array["XML_File"]; 

     // XML Page Check 
     if (File.Exists(xmlfile)) 
     { 
      XmlDocument doc = new XmlDocument(); 
      // If Page Exist Load XML File 
      doc.Load(xmlfile); 

      foreach (KeyValuePair<string, string> Element in Elements_Array) 
      { 
       // Get Element From Dictionary Array 
       String Element_Name = Element.Key; 
       String Element_Type = Element.Value; 

       // Get Element_Name from XMLFile 
       String Value = String.Format("XMLFILE/{0}", Element_Name); 

       // Get Element_Name Value From XMLFile 
       XmlNode Element_Value = doc.SelectSingleNode(Value); 

       // Check If Element_Value Is Null Or Not 
       if (Element_Value != null) 
       { 
        return Element_Value; 
       } 

      } 
     } 

     return null; 
    }