1. 配置数据库环境。。 windows 2008 server 用户名:sa 密码:123456
2.学习c#基础内容
3.装了一个ftp工具。。 这个也写上吧。。 嘿嘿。
4. 理解 泛型与装箱的区别。 委托和事件 arrayList 装箱和拆箱 c#值类型和引用类型
委托感觉就像 函数指针
事件机制 感觉就是一种特殊的委托, 再加上一个事件判断的机制。 可以根据事件的不同做不同的操作
C#动态数组ArrayList介绍
ArrayList是一种动态数组,其容量可随着我们的需要自动进行扩充.
ArrayList位于System.Collections命名空间中,所以我们在使用时,需要导入此命名空间.
下面,我们还是在Student类的基础上利用ArrayList操作,从而了解ArrayList的用法
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
public
class
Student
{
public
Student(){}
public
Student(String name,
int
age,String hobby)
{
this
.Name = name;
this
.Age = age;
this
.Hobby = hobby;
}
private
String name;
public
String Name
{
get
{
return
name;}
set
{name = value;}
}
private
int
age;
public
int
Age
{
get
{
return
age;}
set
{age = value;}
}
private
String hobby;
public
String Hobby
{
get
{
return
hobby;}
set
{hobby = value;}
}
public
void
say()
{
Console.WriteLine(
"大家好,我是'{0}',今年{1}岁,我喜欢'{2}'"
,
this
.Name,
this
.Age,
this
.Hobby);
}
}
|
编写测试类,了解ArrayList的方法
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
|
using
System.Collections;
public
class
TestStudent
{
public
static
void
main(String args [])
{
//建立ArrayList对象
ArrayList students =
new
ArrayList();
//实例化几个Student类对象
Student rose =
new
Student(
"rose"
,25,
"reading"
);
Student jack =
new
Student(
"jack"
,28,
"singing"
);
Student mimi =
new
Student(
"mimi"
,26,
"dancing"
);
//利用ArrayList类的add()方法添加元素
students.add(rose);
students.add(jack);
students.add(mimi);
//利用ArrayList的Count属性查看该集合中的元素数量
int
number = students.Count;
Console.WriteLine(
"共有元素"
+ number +
"个"
);
//读取单个元素,因为存入ArrayList中的元素会变为Object类型,
//所以,在读取时间,
Student stu = students[0]
as
Student;
stu.say();
//遍历元素 -- 通过索引
for
(
int
i = 0;i < students.Count;i ++)
{
Student a = students[i]
as
Student;
a.say();
}
//利用foreach循环
foreach
(Object o
in
students)
{
Student b = o
as
Student;
b.say();
}
//删除元素 通过索引删除
students.removeAt(0);
//删除元素, 通过对象名
students.remove(jack);
//清空元素
students.Clear();
//我们知道,ArrayList的容量会随着我们的需要自动按照一定规律
//进行填充,当我们确定不再添加元素时,我们要释放多余的空间
//这就用到了Capacity属性和TrimtoSize()方法
//利用Capacity属性可以查看当前集合的容量
//利用TrimtoSize()方法可以释放多余的空间
//查看当前容量
int
number = students.Capacity;
//去除多余的容量
students.TrimtoSize();
}
}
|
上面的那个ArrayList 实际上就是一个动态数组。 链表类。 存放Object之类
C#的值类型包括:结构体(数值类型,bool型,用户定义的结构体),枚举,可空类型。 C#的引用类型包括:数组,用户定义的类、接口、委托,object,字符串。 数组的元素,不管是引用类型还是值类型,都存储在托管堆上。 引用类型在栈中存储一个引用,其实际的存储位置位于托管堆。为了方便,本文简称引用类型部署在托管推上。 值类型总是分配在它声明的地方:作为字段时,跟随其所属的变量(实例)存储;作为局部变量时,存储在栈上。 值类型在内存管理方面具有更好的效率,并且不支持多态,适合用作存储数据的载体;引用类型支持多态,适合用于定义应用程序的行为。
疑惑来源于 值类型都是继承自object. 而object属于引用类型
值类型继承自System.ValueType类 ValueType 用更合适的值类型实现重写 Object 中的虚方法。请参见从 ValueType 继承的 Enum。 数据类型分隔为值类型和引用类型。值类型要么是堆栈分配的,要么是在结构中以内联方式分配的。引用类型是堆分配的。引用类型和值类型都是从最终的基类 Object 派生出来的。当值类型需要充当对象时,就在堆上分配一个包装(该包装能使值类型看上去像引用对象一样),并且将该值类型的值复制给它。该包装被加上标记,以便系统知道它包含一个值类型。这个进程称为装箱,其反向进程称为取消装箱。装箱和取消装箱能够使任何类型像对象一样进行处理。
老师的博客: http://www.cnblogs.com/yieryi/p/4626278.html