IF else 块中的重复代码...如何使其更短?

发布于 2024-10-08 05:05:12 字数 1465 浏览 0 评论 0原文

if ((e.Item.OwnerTableView.DataKeyValues[e.Item.ItemIndex]["LanguageID"].ToString()) == null) 
                {
                    Int32 LangID = -1;
                    string QuesTypeID = com.Encrypt(TypeID.ToString(), com.KeyCode);
                    string LanguageID = com.Encrypt(LangID.ToString(), com.KeyCode);
                    string QuesID = com.Encrypt(ID.ToString(), com.KeyCode);
                    string PID = com.Encrypt(radGridQues.CurrentPageIndex.ToString(), com.KeyCode.ToString());
                    Response.Redirect(ROSDAAB.Constants.SiteURL + "editQues/" + "QuesID/" + QuesID + "/" + PID + "/" + QuesTypeID + "/" + LanguageID);
                }
                else   
                {

                    Int32 LangID = Convert.ToInt32(e.Item.OwnerTableView.DataKeyValues[e.Item.ItemIndex]["LanguageID"].ToString());
                    string QuesTypeID = com.Encrypt(TypeID.ToString(), com.KeyCode);
                    string LanguageID = com.Encrypt(LangID.ToString(), com.KeyCode);
                    string QuesID = com.Encrypt(ID.ToString(), com.KeyCode);
                    string PID = com.Encrypt(radGridQues.CurrentPageIndex.ToString(), com.KeyCode.ToString());
                    Response.Redirect(ROSDAAB.Constants.SiteURL + "editQues/" + "QuesID/" + QuesID + "/" + PID + "/" + QuesTypeID + "/" + LanguageID);
                }

[编辑] 这是 IF else 块中的重复代码...我如何使其更短?

if ((e.Item.OwnerTableView.DataKeyValues[e.Item.ItemIndex]["LanguageID"].ToString()) == null) 
                {
                    Int32 LangID = -1;
                    string QuesTypeID = com.Encrypt(TypeID.ToString(), com.KeyCode);
                    string LanguageID = com.Encrypt(LangID.ToString(), com.KeyCode);
                    string QuesID = com.Encrypt(ID.ToString(), com.KeyCode);
                    string PID = com.Encrypt(radGridQues.CurrentPageIndex.ToString(), com.KeyCode.ToString());
                    Response.Redirect(ROSDAAB.Constants.SiteURL + "editQues/" + "QuesID/" + QuesID + "/" + PID + "/" + QuesTypeID + "/" + LanguageID);
                }
                else   
                {

                    Int32 LangID = Convert.ToInt32(e.Item.OwnerTableView.DataKeyValues[e.Item.ItemIndex]["LanguageID"].ToString());
                    string QuesTypeID = com.Encrypt(TypeID.ToString(), com.KeyCode);
                    string LanguageID = com.Encrypt(LangID.ToString(), com.KeyCode);
                    string QuesID = com.Encrypt(ID.ToString(), com.KeyCode);
                    string PID = com.Encrypt(radGridQues.CurrentPageIndex.ToString(), com.KeyCode.ToString());
                    Response.Redirect(ROSDAAB.Constants.SiteURL + "editQues/" + "QuesID/" + QuesID + "/" + PID + "/" + QuesTypeID + "/" + LanguageID);
                }

[EDIT]
Thats duplicate code in IF else blocks...how do I make it shorter ?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

恋你朝朝暮暮 2024-10-15 05:05:12
Int32 LangID = -1;
if (e.Item.OwnerTableView.DataKeyValues[e.Item.ItemIndex]["LanguageID"] != null) 
{
    LangID = Convert.ToInt32(e.Item.OwnerTableView.DataKeyValues[e.Item.ItemIndex]["LanguageID"].ToString());
}
string QuesTypeID = com.Encrypt(TypeID.ToString(), com.KeyCode);
string LanguageID = com.Encrypt(LangID.ToString(), com.KeyCode);
string QuesID = com.Encrypt(ID.ToString(), com.KeyCode);
string PID = com.Encrypt(radGridQues.CurrentPageIndex.ToString(), com.KeyCode.ToString());
Response.Redirect(ROSDAAB.Constants.SiteURL + "editQues/" + "QuesID/" + QuesID + "/" + PID + "/" + QuesTypeID + "/" + LanguageID);

这就是我在这里所做的:

  • 从 if 中提取 LangID,将其设置为默认值 -1,并且仅在 LanguageID 不为空时才更新它。
  • 将 if/else 子句中重复的公共部分放在 if 检查之后,因为根本不再需要 else。
Int32 LangID = -1;
if (e.Item.OwnerTableView.DataKeyValues[e.Item.ItemIndex]["LanguageID"] != null) 
{
    LangID = Convert.ToInt32(e.Item.OwnerTableView.DataKeyValues[e.Item.ItemIndex]["LanguageID"].ToString());
}
string QuesTypeID = com.Encrypt(TypeID.ToString(), com.KeyCode);
string LanguageID = com.Encrypt(LangID.ToString(), com.KeyCode);
string QuesID = com.Encrypt(ID.ToString(), com.KeyCode);
string PID = com.Encrypt(radGridQues.CurrentPageIndex.ToString(), com.KeyCode.ToString());
Response.Redirect(ROSDAAB.Constants.SiteURL + "editQues/" + "QuesID/" + QuesID + "/" + PID + "/" + QuesTypeID + "/" + LanguageID);

Here's what I did here:

  • extract LangID out of the if, set it to the default value of -1, and only update it if LanguageID is not null.
  • place the common part that was duplicated in your if/else clauses after the if check, since the else is no longer needed at all.
七月上 2024-10-15 05:05:12

为什么要使用ToString()?

if (e.Item.OwnerTableView.DataKeyValues[e.Item.ItemIndex]["LanguageID"] == null)

只需要注意基础类型

Int32 LangID = (Int32)e.Item.OwnerTableView.DataKeyValues[e.Item.ItemIndex]["LanguageID"];

即可,更简短地说:

int LangID = e.Item.OwnerTableView.DataKeyValues[e.Item.ItemIndex]["LanguageID"] != null ? (int)e.Item.OwnerTableView.DataKeyValues[e.Item.ItemIndex]["LanguageID"] : -1;
string QuesTypeID = com.Encrypt(TypeID.ToString(), com.KeyCode);
string LanguageID = com.Encrypt(LangID.ToString(), com.KeyCode);
string QuesID = com.Encrypt(ID.ToString(), com.KeyCode);
string PID = com.Encrypt(radGridQues.CurrentPageIndex.ToString(), com.KeyCode.ToString());
Response.Redirect(ROSDAAB.Constants.SiteURL + "editQues/" + "QuesID/" + QuesID + "/" + PID + "/" + QuesTypeID + "/" + LanguageID);

如果 null 检查不起作用,如果您的值来自数据源,请尝试 !Convert.IsDBNull(),

int LangID = !Convert.IsDBNull(e.Item.OwnerTableView.DataKeyValues[e.Item.ItemIndex]["LanguageID"]) ? (int)e.Item.OwnerTableView.DataKeyValues[e.Item.ItemIndex]["LanguageID"] : -1;

Why use ToString()?

if (e.Item.OwnerTableView.DataKeyValues[e.Item.ItemIndex]["LanguageID"] == null)

Just be aware of the underlying type

Int32 LangID = (Int32)e.Item.OwnerTableView.DataKeyValues[e.Item.ItemIndex]["LanguageID"];

So as for shorter:

int LangID = e.Item.OwnerTableView.DataKeyValues[e.Item.ItemIndex]["LanguageID"] != null ? (int)e.Item.OwnerTableView.DataKeyValues[e.Item.ItemIndex]["LanguageID"] : -1;
string QuesTypeID = com.Encrypt(TypeID.ToString(), com.KeyCode);
string LanguageID = com.Encrypt(LangID.ToString(), com.KeyCode);
string QuesID = com.Encrypt(ID.ToString(), com.KeyCode);
string PID = com.Encrypt(radGridQues.CurrentPageIndex.ToString(), com.KeyCode.ToString());
Response.Redirect(ROSDAAB.Constants.SiteURL + "editQues/" + "QuesID/" + QuesID + "/" + PID + "/" + QuesTypeID + "/" + LanguageID);

If the null check does not work, try !Convert.IsDBNull(), if your values are from a data source.

int LangID = !Convert.IsDBNull(e.Item.OwnerTableView.DataKeyValues[e.Item.ItemIndex]["LanguageID"]) ? (int)e.Item.OwnerTableView.DataKeyValues[e.Item.ItemIndex]["LanguageID"] : -1;
无戏配角 2024-10-15 05:05:12

您还可以使用三元运算符来减少重复:

var tempLangId = e.Item.OwnerTableView.DataKeyValues[e.Item.ItemIndex]["LanguageID"];
Int32 LangID = tempLangId == null ? -1 : Convert.ToInt32(tempLangId);

You can also use the ternary operator to reduce repeats:

var tempLangId = e.Item.OwnerTableView.DataKeyValues[e.Item.ItemIndex]["LanguageID"];
Int32 LangID = tempLangId == null ? -1 : Convert.ToInt32(tempLangId);
提笔落墨 2024-10-15 05:05:12

您在下面编写了这样的代码:-

   bool isOk = String.IsNullOrEmpty(e.Item.OwnerTableView.DataKeyValues[e.Item.ItemIndex]["LanguageID"].ToString());    
   Int32 LangID = isOk ? -1 : Convert.ToInt32(e.Item.OwnerTableView.DataKeyValues[e.Item.ItemIndex]["LanguageID"].ToString()); ;
   string QuesTypeID = com.Encrypt(TypeID.ToString(), com.KeyCode);
   string LanguageID = com.Encrypt(LangID.ToString(), com.KeyCode);
   string QuesID = com.Encrypt(ID.ToString(), com.KeyCode);
   string PID = com.Encrypt(radGridQues.CurrentPageIndex.ToString(), com.KeyCode.ToString());
   Response.Redirect(ROSDAAB.Constants.SiteURL + "editQues/" + "QuesID/" + QuesID + "/" + PID + "/" + QuesTypeID + "/" + LanguageID);

You below code this:-

   bool isOk = String.IsNullOrEmpty(e.Item.OwnerTableView.DataKeyValues[e.Item.ItemIndex]["LanguageID"].ToString());    
   Int32 LangID = isOk ? -1 : Convert.ToInt32(e.Item.OwnerTableView.DataKeyValues[e.Item.ItemIndex]["LanguageID"].ToString()); ;
   string QuesTypeID = com.Encrypt(TypeID.ToString(), com.KeyCode);
   string LanguageID = com.Encrypt(LangID.ToString(), com.KeyCode);
   string QuesID = com.Encrypt(ID.ToString(), com.KeyCode);
   string PID = com.Encrypt(radGridQues.CurrentPageIndex.ToString(), com.KeyCode.ToString());
   Response.Redirect(ROSDAAB.Constants.SiteURL + "editQues/" + "QuesID/" + QuesID + "/" + PID + "/" + QuesTypeID + "/" + LanguageID);
韶华倾负 2024-10-15 05:05:12

字符串 QuesTypeID = com.Encrypt(TypeID.ToString(), com.KeyCode);
字符串 LanguageID = com.Encrypt(LangID.ToString(), com.KeyCode);
字符串 QuesID = com.Encrypt(ID.ToString(), com.KeyCode);
字符串 PID = com.Encrypt(radGridQues.CurrentPageIndex.ToString(), com.KeyCode.ToString());

    Int32 LangId = -1;

    if ((e.Item.OwnerTableView.DataKeyValues[e.Item.ItemIndex]["LanguageID"].ToString()) != null) 
    {
                Int32 LangID = Convert.ToInt32(e.Item.OwnerTableView.DataKeyValues[e.Item.ItemIndex]["LanguageID"].ToString());
    }


    Response.Redirect(ROSDAAB.Constants.SiteURL + "editQues/" + "QuesID/" + QuesID + "/" + PID + "/" + QuesTypeID + "/" + LanguageID);

string QuesTypeID = com.Encrypt(TypeID.ToString(), com.KeyCode);
string LanguageID = com.Encrypt(LangID.ToString(), com.KeyCode);
string QuesID = com.Encrypt(ID.ToString(), com.KeyCode);
string PID = com.Encrypt(radGridQues.CurrentPageIndex.ToString(), com.KeyCode.ToString());

    Int32 LangId = -1;

    if ((e.Item.OwnerTableView.DataKeyValues[e.Item.ItemIndex]["LanguageID"].ToString()) != null) 
    {
                Int32 LangID = Convert.ToInt32(e.Item.OwnerTableView.DataKeyValues[e.Item.ItemIndex]["LanguageID"].ToString());
    }


    Response.Redirect(ROSDAAB.Constants.SiteURL + "editQues/" + "QuesID/" + QuesID + "/" + PID + "/" + QuesTypeID + "/" + LanguageID);
回忆凄美了谁 2024-10-15 05:05:12

好的,我尝试了这个..它有效

 if ((e.Item.OwnerTableView.DataKeyValues[e.Item.ItemIndex]["LanguageID"].ToString()) == String.Empty)

ok I tried this ..it worked

 if ((e.Item.OwnerTableView.DataKeyValues[e.Item.ItemIndex]["LanguageID"].ToString()) == String.Empty)
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文