学习ASP.NET需求的基本的c#知识
作者:Eve Cole
更新时间:2009-12-05 14:52:37
-
微软的实例教材中讲了三种语言:c#、vb 、Jscript,为了让大家过一把新东西隐,我们还是学c#吧。这个最好有一点c++基础。
不过没有也没有关系,大不了多费点力了。
任何一门语言都有两部分:
数据+语法+算法
数据是用来表示信息的,语法是来控制的。算法说白了就是人们总结的一些解决问题的思维方式。到于数据吧,多了自然有数据结构了,然后就出来了什么查询、插入、修改什么的。
1.存储数据当然要用到变量了,现在就来讲一下c#的申明方法!
通常方法是:
类型+变量名
int x //定义一个整形变量
string name,pwd; //定义两个字符性变量
object x; //定义一下对象
object obj=new object();//基于某一个对象创建一个实例
public string x;//给字符变量加一个类型修饰符,让所有用户均能访问
说明一下:
在申明变量时,对类型单词象int string object 都要用小写,因为c#是严格区分大小写的.用INT x;定义变量就错了。
我们还是来两个程序看看:
/* 学会变量的申明方法
create by vagrant */
using System;
class Test
{ static void Main()
{ int x=3;
Console.WriteLine("x={0}",x);
string name="vagrant";
string pwd="197926";
Console.WriteLine("your name is :{0};pwd is {1}",name,pwd);
object y;
y=x;//显式转换
Console.WriteLine("y={0}",y);
}
}
2.向浏览器发送字符:
上面讲到的是在C#中用System.Console.WriteLine输出变量的值,但在ASP.NET还是要用到Response对象的Response.Write("char")方法,不过此时不可省掉括号.
例:
<%@ language="C#" %>
<% string name;
name="vagrant";
Response.Write("you name is "+name);
%>
3.访问索引属性的值(以表单中元素为例)
学过asp的朋友都知用Requst.Form("对象名")提取表单对象的值.但是在asp.net应用Request.QueryString["name"]提取.
4.申明索引属性
在asp.net中我们要学会事件编程概念与索引指示器。通过索引指示器我们可以象数组那样访问类的数据信息的方法。还是我们先来构造一个简单的例子:
using System;
class Team
{
string[] s_name=new string[3]{"vagrant","jack","rose"};//定义类的一个域,然后写构造子函数,使得外类能通过索引访问
public string this[int nIndex]//访问索引申明
{
get {
return s_name[nIndex];//提供外类读的权力
}
set {
s_name[nIndex]=value;//提供外类写的权力
}
}
}
class Test
{
public static void Main(){
Team t1=new Team();//创建一个Team类的实例
for(int i=0;i<3;i++)
Console.WriteLine(t1[i]);//通过索引指示器访问实例的数据信息
}
}
5.定义并初始化数据
当我们在处理批量数据常用到数组,定义数组要考虑到三个问题:类型,数据名,维数
我还是以一维数据来说吧,毕竟常用的就是一维数据。
定义数组:
string studentname[]=new string[50];
初始化:
方法一.
studentname[0]="vagrant";
studentname[1]="jack";
........
方法二.
int[] sex=new int[2]{0,1};//0代表男,1代表女
这很好理解我就不解释了。
6.结构与枚举
我之所以把结构与枚举放在一起来讲是因为这两者有相似之处又有不同之处。
结构:一系列相关的信息组成单一实体。象通讯录通常包括:姓名、电话、地址等。
枚举:逻辑上密不可分的一系列数据。比方星期有一到七。但星期一到星期天逻辑上密不可分。
这两者是有不同的,结构是数据集合,而枚举每次只能取其中一个。结构与枚举都是数据结构类型中的一种。
定义结构数据类型:
struct PhoneBook {
public string name;
public string phone;
public string address;
}
定义一个该结构类型的变量
PhoneBook p1;
给结构变量各个成员赋值
p1.name="vagrant";
p1.phone="88888888";
p1.address="wuhan";
定义枚举数据类型,并赋值
//定义一个枚举类型
public enum MessageSize {
Small = 0,
Medium = 1,
Large = 2
}
// 创建一个枚举类型变量
public MessageSize msgsize;
// 给该变量赋值
msgsize = Small;
7.声明并使用方法
// 定义一个没有返回值的函数
void voidfunction() {
...
}
// 声明一个有返回值的子函数
String stringfunction() {
...
return (String) val;//(string)表明返回类型
}
//申明一个能计算的函数
String parmfunction(String a, String b) {
...
return (String) (a + b);
}
// 使用函数
voidfunction();
String s1 = stringfunction();
String s2 = parmfunction("Hello", "World!");
8.流程控制语句
在c#中流程控制语句与C++没有多大区别。只不过C#中加了一个foreach(vb程序员应该不会陌生).
流程控制大不了有选择、循环。
if条件语句的用法:
if(Requery.QueryString["name"]==null){
statement....
}
当有太多选择时,常用switch语句
例 :
switch (Name) {
case "John" :
...
break;
case "Paul" :
...
break;
case "Ringo" :
...
break;
default:
...
break;
}
循环语句通常有两种:
a.for循环
for (int i=0; i<3; i++){
statement...
}
b.while循环
int i = 0;
while (i<3) {
Console.WriteLine(i.ToString());//i.ToString()目的是i转化为字符串型
i += 1;
}
9.异常处理
在编写程序时,我们常会出现一些事先不可预期的事情。比方用户的错误输入、内存不够、网络资源不可用、数据库无法使用等情况。所以我们应该用异常处理方法来处理这类问题。C#里所有的异常都为类的一个实例,这个类继承于System.Exception类
先来介绍一下抛出异常语句thow
throw expression
这个语句是在计算表达式的值时产生的一个异常
异常处理语句:
try是用来捕捉块执行过程中发生的异常
cathc是用来处理该异常的。
通用方法:
try {
//可能抛出异常的代码
} catch(OverflowException e) {
// 捕捉一个详细的异常
} catch(Exception e) {
// 捕捉一个通常的异常
} finally {
// 执行一个没有异常的代码
}
看一个贝贝写的处理数据库联接出错的异常:
try
{
OleDbConnection conn = getConn(); //getConn():得到连接对象
OleDbDataAdapter adapter = new OleDbDataAdapter();
string sqlstr="select id,title,author,pic,hits,posttime from notes order by posttime desc";
mydataset= new System.Data.DataSet();
adapter.SelectCommand = new OleDbCommand(sqlstr, conn);
adapter.Fill(mydataset,"notes");
conn.Close();
}
catch(Exception e)
{
throw(new Exception("数据库出错:" + e.Message))
}
10.字符串处理
在c#中string为引用类型,所以可以用联接,截断
看了下面这个实例就知道了!
// 使用字符串
String s1;
String s2 = "hello";
s2 += " world";
s1 = s2 + " !!!";
// 使用StringBuilder类的Append方法
StringBuilder s3 = new StringBuilder();
s3.Append("hello");
s3.Append(" world");
s3.Append(" !!!");
11.事件处理
事件是类向外界发送通知的成员。
先还是看一个事件处理代表例子:
void MyButton_Click(Object sender,
EventArgs E) {
...
}
这个我也不大懂,听说看了MFC会比较清楚,如果哪位有这方面的经验,还望多多指教。
12。声明一个事件
// 创建一个public事件
public event EventHandler MyEvent;
// 为该事件定义一个方法
protected void OnMyEvent(EventArgs e) {
MyEvent(this, e);
}
13.给事业加OR去处理该事件的方法
Control.Change += new EventHandler(this.ChangeEventHandler);
Control.Change -= new EventHandler(this.ChangeEventHandler);
14.类型转换
int i = 3;//定义一个整形变量并赋值
String s = i.ToString();//整形转化为字符串型,用ToString()
double d = Double.Parse(s);//字符串型转化为双精度型用Double.Parse(var);
还有一些,我就不解释了,等我们有了一定的基础再深究吧。反正了解了这一些对后面的常用问题处理还是没有问题