根据条件返回值

时间:2016-06-01 03:06:06

标签: c# if-statement methods return extension-methods

假设我有以下扩展方法:

public static string sampleMethod(this int num) {
    return "Valid";
}

如何终止sampleMethod并在num > 25显示消息框?

如果我尝试下面的代码,我会在sampleMethod上收到一个红色下划线并说not all code path returns a value

public static string sampleMethod(this int num) {
    if(num > 25) {
        MessageBox.Show("Integer must not exceed 25 !");
    } else {
        return "Valid String";
    }
}

如果我在throw new Exception("...");下添加MessageBox.Show,一切顺利但应用程序终止。

如果不满足条件,如何显示MessageBox并终止方法?

谢谢。

2 个答案:

答案 0 :(得分:5)

确保始终将string(因为字符串是您的返回值)返回到函数的所有可能结果/路径

public static string sampleMethod(this int num) {
    if(num > 25) {
        MessageBox.Show("Integer must not exceed 25 !");
        return "";
    }

    return "Valid String";
}

您的代码无效,因为

public static string sampleMethod(this int num) {
    if(num > 25) {
        MessageBox.Show("Integer must not exceed 25 !");
        // when it go to this block, it is not returning anything
    } else {
        return "Valid String";
    }
}

答案 1 :(得分:1)

假设您有25个索引的字符串数组:

public String[] data = new String[25] { /* declare strings here, e.g. "Lorem Ipsum" */ }

// indexer
public String this [int num]
{
    get
    {
        return data[num];
    }
    set
    {
        data[num] = value;
    }
}

如果您不希望在数组索引超过25时返回任何字符串,则应该如下更改方法:

public static String sampleMethod(this int num) {
    if(num > 25) {
        MessageBox.Show("Integer must not exceed 25 !");
        return String.Empty; // this won't provide any string value
    } else {
        return "Valid String";
    }
}