2
我試圖編譯下面的代碼:仿製出賦值內部try塊
public static void RequireOrPermanentRedirect<T>(this System.Web.UI.Page page, string QueryStringKey, string RedirectUrl, out T parsedValue)
{
string QueryStringValue = page.Request.QueryString[QueryStringKey];
if (String.IsNullOrEmpty(QueryStringValue))
{
page.Response.RedirectPermanent(page.ResolveUrl(RedirectUrl));
}
try
{
parsedValue = (T)Convert.ChangeType(QueryStringValue, typeof(T));
}
catch
{
page.Response.RedirectPermanent(RedirectUrl);
}
}
但我得到一個編譯器錯誤:
Error 1 The out parameter 'parsedValue' must be assigned to before control leaves the current method
它的擴展方法,我一直在使用一段時間,但我想擴大一點,所以我不必重新分析值在頁面中使用它。
當前使用情況:
Page.RequireOrPermanentRedirect<Int32>("TeamId", "Default.aspx");
int teamId = Int32.Parse(Request.QueryString["TeamId"]);
我想怎麼能夠做到:
private Int32 teamId;
protected void Page_Load(object sender, EventArgs e)
{
Page.RequireOrPermanentRedirect<Int32>("TeamId", "Default.aspx", out teamId);
}
電流(工作)的代碼,我剛纔創建並扔掉一個T value
:
try
{
T value = (T)Convert.ChangeType(QueryStringValue, typeof(T));
}
感謝馬克,我想我還是有一些瞭解的try/catch :) - 該解決方案爲我工作! – rtpHarry