-3

私の関数の戻り値に問題があります。私がやろうとしているのは、から要素の値を取得して値XML_Fileを返すことですForm_Load

関数を処理しようとしましたXML_Array_Loadが、以下のエラーが発生しました。(Form_Load他の関数のエラーのため、 はテストされていません。)

XML_Array_Load 関数エラー:

エラー 1 'Program.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. 2 つのうちの 1 つを選択して返す必要があり、それらの 2 つの場所のいずれかをその選択と一致するように変更する必要があります。

また、ループreturn内にステートメントがあります。foreachできるreturn値は 1 つだけなので、コレクションの最初の null 以外の値を返すことになります。それは本当にあなたが望むものですか?これはかなり珍しいことです。

于 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 に答える