如何消除"else-if"语句

Str*_*nye 1 .net c# asp.net

我的函数从某个Web页面获取QueryString作为string.我需要把它包起来,检查一下,我必须使用什么策略.

现在我的代码看起来很难看(我想是这样):

public QueryStringParser(string QueryString)
        {
            if (string.IsNullOrEmpty(QueryString))
            {
                this._mode = Mode.First;
            }
            else if (QueryString.Contains(_FristFieldName) && !QueryString.Contains(_SecondFieldName))
            {
                this._mode = Mode.Second;
            }
            else if (!QueryString.Contains(_FristFieldName) && QueryString.Contains(_SecondFieldName))
            {
                this._mode = Mode.Third;
            }
            else
            {
                throw new ArgumentException("QueryString has wrong format");
            }
        }
Run Code Online (Sandbox Code Playgroud)

一个QueryString中不能同时存在两个FieldNames.

如何将此代码更改为可读.

mkj*_*mkj 6

我至少会在检查现有字段时删除一些重复:

public QueryStringParser(string QueryString) {
    if (string.IsNullOrEmpty(QueryString))
        this._mode = Mode.First;
    else {
        bool has_1st = QueryString.Contains(_FristFieldName);
        bool has_2nd = QueryString.Contains(_SecondFieldName);
        if      ( has_1st && !has_2nd) this._mode = Mode.Second;
        else if (!has_1st &&  has_2nd) this._mode = Mode.Third;
        else
            throw new ArgumentException("QueryString has wrong format");
    }
}
Run Code Online (Sandbox Code Playgroud)