变量
枚举: 一个变量类型,内含几个子变量,默认是INT类型的。
enum typename
{
value1,
value2,
....
valueN
}
或
enum typename:underlyingtype //定义下面变量的类型。变量也可赋值,如不赋值,默认value1为0,下面的递增1。
{
value1,
value2,
....
valueN
}
例:enum orientation:byte
{
north=1,
south=2,
east=3,
west=4
}
static void Main(string[] args)
{
orientation mydirection=orientation.north;
console.writeline("mydirection={0}",mydirection);
console.readkey();
}
变量的类型转换:
1、隐式转换:
var1=var2;
2、显式转换:
val1=(int)val2
int intval1=Convert.Toint32(val2)
Convert.Toint32(val)转换为INT
Convert.Toint64(val)转换为long
split()的例子
static void Main(string[] args)
{
string mystring="this is a test";
char[] separator={' '};//指定分开的分隔符
string[] mywords;//定义一个字符串数组
mywords=mystring.split(separator);将字符串分开,保留在数组里
foreach (string word in mywords)
{
console.writeline("{0}", word);
}
console.readkey();
}
类:
public static string aaa;//静态成员变量
public static void aaa();//静态成员函数
{
}
public string aaa;//实体成员变量
public void aaa;//实体成员函数
{
}
在使用上,静态成员变量可以不声明对像直接使用,相反,实体成员就必须先声明对象实体,才能使用。
public:任何外部的类都可以不受限制的存取类数据。
private:限定此类内部使用。
protected:除了类本身可以用外,任何继承此类的类都可以使用。
internal:表示在同一个应用程序(Application)或类库(Library)中都可以使用。
类的事件:
几个英语词:
Event 事件
Event Sender 事件发生者
Event Reciiver 事件接收者
Event Delegate 事件委托
例子:
public partial class lei_jichu:System.Web.UI.Page
{
public class book
{
string title;//标题
int num;//书的库存
double price;//价格
public delegate void TitleChengHendler();//事先声明一个委托,也可以在类的外部声明委托类型
public event TitleChengHendler TitleCheng;//声明一个事件并指定他的委托类型
//下面定义两个函数
public Book()
{
}
public Book(string ntitle, int nnum, double nprice)
{
title=ntitle;
num=nnum;
price=nprice;
}
//下面我们定义了三个可读可写的属性
public string Title
{
get
{return title;}
set
{
title=value;
TitleCheng();//也就是说,如果通过这里修改了这个标题,就会触发这个事件。
}
}
public int Num
{
get
{return num;}
set
{num=value;}
}
public double Price
{
get
{return price;}
set
{price=value;}
}
//继续添加方法
public string BookInfo()
{
sring Html="书名是:" + title + "<br>库存:" + num + "本<br>价格为:" + price + "元/本";
return Html;
}
}
//下面调用类:
protected void Page_Load(object sender,EventArgs e)
{
Book shu=new Book();
shu.TitleCheng+=new Book.TitleChengHendler(shu_TitleCheng);
shu.Title="三国";
shu.Num=5000;
shu.Price=43.6;
Response.Write(Shu.BookInfo());
}
void shu_TitleCheng()
{
Response.Write("事件执行了<br>");
}
}
对象:
1/ request
提交表单有两种,get和post
get(地址栏带参数显示):
request.querystring["变量名"];
post:
request.form["变量名"];
不指定方式的:
request.params["变量名"]; 或request["变量名"];
获取服务器信息:
response.write("当前网页虚拟路径是:" + request.servervariables["url"]);
response.write("<br>当前网页虚拟路径是:" + request.rawurl);
response.write("<br>实际路径:" + request.servervariables["path_translated"]);
response.write("<br>实际路径:" + request.physicalpath);
response.write("<br>服务器名:" + request.servervariables["server_name"]);
response.write("<br>服务器IP:" + request.userhostaddress);
获取浏览器环境:
response.write("<br>这个浏览器是否支持背景音乐:" + request.browser.backgroundsounds]);
response.write("<br>这个浏览器是否支持框架:" + request.browser.frames);
response.write("客户端系统:" + request.browser.platform);
2/ cookie
Cookie是保存在客户端或浏览器中的对象
写入Cookie
httpcookie nc=new httpcookie("newcookie");
nc.values["name"]="Tom";
nc.values["dt"]=DateTime.New.Tostring();
response.cookies.add(nc);
读取Cookie
httpcookie getcook=request.cookies["newcookie"]
response.write(getcook.values["dt"]);
3/response
ContentType属性主要用来描述内容类型,此字符串的格式为type/subtype,前者表示内容分类,后者表示特定的内容类型,可以设置或者获取数据类型,默认值为text/html
如:response.contenttype="image/gif",表示输出gif格式的图像.
response.Expires=5; 获取或设置页面过期时间,单位为分钟.这个例子表示从打开页面的5分钟内,你访问的都是缓存中的数据,而5分钟后就会重新去服务器下载.
response.Buffer=false; 设置或获取当前页是否缓存输出,值为bool型,默认为True
response.Flush(); 立即将缓存输出去
response.End();将当前缓冲区内容立即输出,并停止当前页的执行.
response.redirect("url地址"); 将客户端重新定向到新的URL
4/server
将虚拟路径转换到实际路径
string a=Server.MapPath("~/app_data/a.xml").ToString //将路径指到实际根目录下.
5/Application
是一上共享的对象,当程序开始运行建立直到程序关闭,他的变量是共享的.要使用这个对象需要在系统中建立一个global.asa文件. Application对象在程序中只能有一个.
例:页面统计
在Global.asa文件中:
void Application_Start(object sender,EventArgs e)
{
d //应用程序启动时运行的代码
Application["a"]=0;
}
页面装截文件下:
protectde void Page_Load(object sender,EventArgs e)
{
Application.Lock();
Application["a"]=Application["a"]+1;
Application.unlock();
Response.Write(Application["a"]);
}
/session对象
每个人进到程序时都会建立一个Session对象,也就是说Application对象只有一个,而Session对象有多少人用就有多少个Session,他是不能共享的.Session一般是用来保存用户的信息的.
在Global.asa中:
Void Session_start(object sender,EventArgs e)
{
//在启动会话时运行的代码
Session["name"]="小宇"
}
页面装截文件下:
protectde void Page_Load(object sender,EventArgs e)
{
Application.Lock();
Application["a"]=Application["a"]+1;
Application.unlock();
Response.Write(Application["a"]);
Response.write(session["name"]);
}
/ page对象
protected void page_init(object sender,EventArgs e)
{
//当页面初始化时,例如可以在加载控件之前检测客户端环境变量.他与Load工作方式差不多,但是在Load之前运行,而且,当网页重新加载的时候不会再触发这个事件.
}
protected void page_Load(object sender,EventArgs e)
{
//每次刷新页面,.net都会为他绘制一个全新的页面,并将他按新页面来处理,所以每次从新加载都要触发这个事件.
if(!IsPostBack)
{
DropDownList1.Items.Add("aaaaa")
DropDownList1.Items.Add("bbbbb")
}
}
控件:
1/DropDownList控件
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Collections;//因为要使用ArrayList
//DropDownList初始化选择的值内容
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
ArrayList arr1 = new ArrayList();//注意大小写
arr1.Add ("请选择");
arr1.Add ("刘志东");
arr1.Add ("小宇");
DropDownList1.DataSource =arr1;
DropDownList1.DataBind();
}
}
//根据DropDownList选择的值,Label显示不同的提示.
protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
{
switch (DropDownList1.SelectedValue)
{
case "请选择":
Label1.Text = "就是请选择";
break;
case "刘东":
Label1.Text = "就是刘东";
break;
case "小宇":
Label1.Text = "就是刘东的儿子";
break;
default:
Label1.Text = "在前面选择个";
break;
}
}
}