枚举变量,就是指用 Enum 类型定义的变量。变量和参数都可以定义为 Enum 类型。Enum 类型中的元素被初始化为 Enum 语句中指定的常数值。Enum 语句只能在模块级别中出现。定义 Enum 类型后,就可以用它来定义变量,参数或返回该类型的过程。不能用模块名来限定 Enum 类型类模块中的 Public Enum 类型并不是该类的成员;只不过它们也被写入到类型库中。在标准模块中定义的 Enum 类型则不写到类型库中。具有相同名字的 Public Enum 类型不能既在标准模块中定义,又在类模块中定义,因为它们共享相同的命名空间。若不同的类型库中有两个 Enum 类型的名字相同,但成员不同,则对这种类型的变量的引用,将取决于哪一个类型库具有更高的引用优先级。
为了形象说明,举个例子来说明一下枚举的应用,在duwamish中恰有一个,在搜索页面传值过程中,
String searchText = SearchTextBox.Text.Trim();
int index = SearchDropDownList.SelectedIndex;
Response.Redirect((new StringBuilder(PageBase.UrlBase))
.Append("/searchresults.aspx?type=")
.Append(index)
.Append("&fullType=")
.Append(Server.HtmlEncode(SearchDropDownList.Items[index].Text))
.Append("&text=")
.Append(Server.UrlEncode(searchText)).ToString(), false);
其中在类PageBase下面的定义的UrlBase
public static String UrlBase
{
get
{
return @"http://" + UrlSuffix;
}
}
private static string UrlSuffix
{
get
{
return HttpContext.Current.Request.Url.Host + HttpContext.Current.Request.ApplicationPath;
}
}
在BookData定义的枚举为
public enum SearchTypeEnum
{
/// <summary>
/// Title search.
/// </summary>
Title = 0,
/// <summary>
/// ISBN search.
/// </summary>
ISBN = 1,
/// <summary>
/// Author search.
/// </summary>
Author = 2,
/// <summary>
/// Subject search.
/// </summary>
Subject = 3,
/// <summary>
/// Id search.
/// </summary>
ID = 4,
/// <summary>
/// Id list search.
/// </summary>
IdList = 5
}
在type传值时,在搜索结果页面中,调用了枚举
Duwamish7.Common.Data.BookData.SearchTypeEnum searchEnumType;
searchEnumType = (Duwamish7.Common.Data.BookData.SearchTypeEnum)Int32.Parse(Request.QueryString["type"]);
这样如果在查询标题时,Tite在传值的时候对应的是0,这样searchEnumType在这取的值就为Title