这个功能有什么问题。无法返回字符串值

时间:2012-05-01 21:23:06

标签: c# function return-value sharepoint-api elevated-privileges

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

上面是一段代码。

问题是不允许返回字符串。它不断给出编译错误。我确信我做错了!!。

感谢。

5 个答案:

答案 0 :(得分:2)

假设它类似于:

“并非所有代码都返回值”。

如果是这样,只需添加

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

        return cValueFound ;
 }

答案 1 :(得分:1)

将它放在方法的底部,因为如果捕获到异常则不返回。

    catch (Exception ex)
    {
        return cValueFound;
    }
    finally
    {
    }
}

答案 2 :(得分:1)

您无法从finally返回, (control cannot leave the body from finally clause或其他)

最后或从catch

移动返回

答案 3 :(得分:0)

只需在finally块下面添加你的return语句。

不要回来试试blck。

答案 4 :(得分:0)

我看到开发人员错过了这么多次。发生这种情况的原因是因为一旦定义了函数的返回类型,那么函数应该在所有出口点都有一个return语句。在这种情况下,一个函数应该在try块的末尾有一个return语句,一个在catch块内,或者在Tigran定义的底部只有一个右边。如果你不打算从catch块返回任何东西,那么只返回null;

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


 }