2016-11-18 35 views
-7
 else 
    strPath = Path.Combine(Server.MapPath("~/" + strFileToUpload + strVendorNo), fileName); 

           if (!string.IsNullOrEmpty(strPath)) 
           { 
            strReturnMssg = strPath; 
            fileItem.SaveAs(strPath); 
           } 
          } 
         } 
           else 


     strReturnMessage = "Selected file should be less than 5ΜB."; 
           } 
        } 
       } 
      } 
     } 
     catch (Exception ex) 
     { 
      Response.Write("<!--" + ex.Message + "-->"); 
     } 

     return strReturnMssg; 
    } 

無法發送文件附加到服務器的唯一路徑是怎麼回事 在錯誤11的輸出參數「strReturnMessage」得到一個錯誤必須分配給前控制之前留下當前方法的out參數必須被分配到控制離開當前方法

+1

如果我們能看到:1 - 實際的方法參數來找出你的'out'變量是什麼。 2 - 格式不會讓我眼睛流血。 3 - 讓你真正閱讀錯誤信息,清楚地告訴你如何處理這種情況 –

回答

0

您的返回消息變量似乎不是您的try-catch塊中發生錯誤時定義的。只需在方法開始處設置strReturnMssg = string.Empty或默認值即可。

0

錯誤是因爲在離開該方法之前,您尚未在某個範圍內爲您的參數out分配值。例如:因爲someValue尚未else語句return語句之前分配給

bool TrySomeMethod(bool someCondition, out int someValue) 
{ 
    if (someCondition) 
    { 
     someValue = 1; 
     return true; 
    } 
    else 
    { 
     return false; 
    } 
} 

會給你同樣的編譯時錯誤。

爲了解決這個問題,你可以在你回來之前分配一個值:

someValue = -1; 
return false; 

或者在你的方法的頂部,你可以將某些默認值分配給out參數即

someValue = -1; 
if (someCondition) 
//.... 

然而,隨着這種方法你必須小心地將out參數設置爲你想要的參數,如果成功,因爲沒有錯誤拋出,即

bool TrySomeMethod(bool someCondition, out int someValue) 
{ 
    someValue = -1; 
    if (someCondition) 
    { 
     return true; 
    } 
    else 
    { 
     return false; 
    } 
} 

這將編譯正常,但有一個邏輯問題,因爲someValue永遠不會設置爲1裏面的if語句。

請注意,在您的特定情況下,您的方法想要strReturnMessageout參數,並且您還返回方法strReturnMssg中名稱非常類似的變量。如果你需要兩個返回消息,那麼你的邏輯就不太正確。

相關問題