-3

我的函数的返回值有一些问题。我想做的是从中获取一个元素值XML_File并返回该值,以便我可以在Form_Load.

我尝试处理该XML_Array_Load功能,但出现以下错误。(Form_Load由于其他函数的错误,尚未测试。)

XML_Array_Load 函数错误:

错误 1 ​​由于 'Pr​​ogram.Form1.XML_Array_Load(System.Collections.Generic.Dictionary, System.Collections.Generic.Dictionary)' 返回 void,return 关键字后面不能跟对象表达式

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

3 回答 3

2

您将方法声明为static void XML_Array_Load(). void意味着它不返回任何值。然后你试图返回一个值。

你不能那样做。如果您希望该方法返回一个值,请将其声明为这样。

static XmlNode XML_Array_Load(...)
于 2012-08-29T13:42:41.887 回答
0

正如错误消息告诉您的那样,该方法的返回类型为 void,这意味着它不返回任何内容。如果您希望它返回某些内容,那么您需要更改void为您希望它返回的任何内容。

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

你也有你的循环return内的语句。foreach你只能return有一个值,所以你最终要做的是返回集合的第一个非空值。这真的是你想要的吗?这是一件相当不寻常的事情。

于 2012-08-29T13:42:32.517 回答
0

1 用返回类型替换 void

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

2 并在函数末尾添加return,以确保所有路径返回值

...
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;
    }
于 2012-08-29T13:43:13.610 回答