1

我有以下方法:

    public static IEnumerable<SelectListItem> GetSpacedOptions<T>() where T : struct
    {
        var t = typeof(T);
        if (!t.IsEnum)
        {
            throw new ArgumentException("Not an enum type");
        }
        var options = Enum.GetValues(t).Cast<T>()
            .Select(x => new SelectListItem
            {
                Value = ((int) Enum.ToObject(t, x)).ToString(),
                Text = Regex.Replace(x.ToString(), "([A-Z])", " $1").Trim()
            });
        return options;
    }

我需要做的是添加一个名为 zeroPad 的布尔参数。因此,如果未提供,则方法将保持不变,但如果提供,则文本输出将始终为两位数字符串,例如“01”、“04”或“77”。

如何添加该参数。好像没有地方可以添加。

4

2 回答 2

3

如何将默认值提供为false.-

public static IEnumerable<TestClass> GetSpacedOptions<T>(bool zeroPad = false)
                                              where T : struct

用户可以通过两种方式调用它 -

GetSpacedOptions<MyEnum>(true);

如果未指定zeroPadvalue,则false默认为 value

GetSpacedOptions<MyEnum>();
于 2012-10-21T19:22:27.913 回答
1

参数在括号之间:

public static IEnumerable<SelectListItem> GetSpacedOptions<T>(bool zeroPad) where T : struct
{
  ...
}

使用调用带参数的方法的无参数方法重载:

public static IEnumerable<SelectListItem> GetSpacedOptions<T>() where T : struct
{
  return GetSpacedOptions<T>(false);
}
于 2012-10-21T19:19:40.767 回答