0
public static string GetContentFromSPList(string cValueToFind)
{   
    string cValueFound = "";
    try
    {
        SPSecurity.RunWithElevatedPrivileges(delegate()
        {
            using (SPSite site = new SPSite("http://mysite"))
            {
                site.AllowUnsafeUpdates = true;
                using (SPWeb web = site.OpenWeb())
                {
                    web.AllowUnsafeUpdates = true;

                    SPList oListAbout = web.Lists["About"];
                    SPQuery oQuery = new SPQuery();

                    oQuery.Query = "<OrderBy><FieldRef Name='myField' /></OrderBy><Where><Eq><FieldRef Name='myField' /><Value Type='Choice'>" + cValueToFind + "</Value></Eq></Where>";

                    SPListItemCollection collListItems = oListAbout.GetItems(oQuery);

                    foreach (SPListItem oListItem in collListItems)
                    {
                        cValueFound = (oListItem["FieldContents"] != null ? oListItem["FieldContents"].ToString() : "");
                    }
                }
            }
            return cValueFound;
        });
        //return cValueFound;
    }
    catch (Exception ex)
    {
    }
    finally
    {
        //return cValueFound;
    }
}

上記はコードの一部です。

問題は、文字列を返すことを許可していません。コンパイルエラーが発生し続けます。私は何か間違ったことをしていると確信しています!!。

ありがとう。

4

5 に答える 5

2

それが次のようなものだと思います:

「すべてのコードが値を返すわけではありません」。

もしそうなら、追加するだけです

public static string GetContentFromSPList(string cValueToFind)
{   
       string cValueFound = "";
        try
        {
           //code
        }
        catch (Exception ex)
        {
        }
        finally
        {
           //some cleanup
        }

        return cValueFound ;
 }
于 2012-05-01T21:31:03.273 に答える
1

例外がキャッチされても返されないため、これをメソッドの最後に配置します。

    catch (Exception ex)
    {
        return cValueFound;
    }
    finally
    {
    }
}
于 2012-05-01T21:30:16.017 に答える
1

finally
control cannot leave the body from finally clauseまたは何か)から戻ることはできません

最終的にまたはキャッチからリターンを移動します

于 2012-05-01T21:32:04.163 に答える
0

開発者がこれを何度も見逃しているのを見てきました。これが発生する理由は、関数の戻り値の型を定義すると、関数のすべての終了点に return ステートメントが必要になるためです。この場合、関数は、try ブロックの最後に 1 つ、catch ブロックの内側に 1 つ、または Tigran が定義したように一番下に 1 つの return ステートメントを持つ必要があります。catch ブロックから何かを返すつもりがない場合は、null を返します。

public static string GetContentFromSPList(string cValueToFind)
{   
       string value= "";
        try
        {
           //code
return value;
        }
        catch (Exception ex)
        {
return null;
        }
        finally
        {
           //some cleanup
        }


 }
于 2012-05-01T21:48:53.743 に答える
0

finally ブロックの下に return ステートメントを追加するだけです。

try ブロックに戻らないでください。

于 2012-05-01T21:43:32.977 に答える