在petshop4.0中有这样一段代码:

Code
1
public IList<CategoryInfo> GetCategories()
{
2
3
IList<CategoryInfo> categories = new List<CategoryInfo>();
4
5
//Execute a query to read the categories
6
using(SqlDataReader rdr = SqlHelper.ExecuteReader(SqlHelper.ConnectionStringLocalTransaction, CommandType.Text, SQL_SELECT_CATEGORIES, null))
{
7
while (rdr.Read())
{
8
CategoryInfo cat = new CategoryInfo(rdr.GetString(0), rdr.GetString(1), rdr.GetString(2));
9
categories.Add(cat);
10
}
11
}
12
return categories;
13
}
在第6行处用到了using,这里我想提醒自己的是,这是using的一种用法之一。
using共有三种用法:
1.引用命名空间,减少冗余代码。
Using System.Web.UI.WebControls;
2.创建命名空间的别名(using 别名)。
using MyAlias = MyCompany.Proj.Nested;
3.即时释放资源。
Using (TestObject a = new TestObject())
{
// 使用对象
}
//对象资源被释放
上面代码其实等同于:

Code
1
try
{
2
SqlDataReader rdr = SqlHelper.ExecuteReader(SqlHelper.ConnectionStringLocalTransaction, CommandType.Text,SQL_SELECT_CATEGORIES, null) ;
3
while (rdr.Read())
4
{
5
CategoryInfo cat = new CategoryInfo(rdr.GetString(0), rdr.GetString(1), rdr.GetString(2));
6
categories.Add(cat);
7
}
8
9
return categories;
10
11
}
12
finally
13
{rdr .Dispose()}
14
这种用法的要求是在using()括号里面的类要实现IDisposable接口,否则的话变异的时候会出错!



1



2

3

4

5

6



7



8

9

10

11

12

13

在第6行处用到了using,这里我想提醒自己的是,这是using的一种用法之一。
using共有三种用法:
1.引用命名空间,减少冗余代码。
Using System.Web.UI.WebControls;
2.创建命名空间的别名(using 别名)。
using MyAlias = MyCompany.Proj.Nested;
3.即时释放资源。
Using (TestObject a = new TestObject())
{
// 使用对象
}
//对象资源被释放
上面代码其实等同于:


1



2

3

4



5

6

7

8

9

10

11

12

13



14

