webform1.aspx<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="work083.WebForm1" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>类型转换优化</title>
</head>
<body>
<form id="form1" runat="server">
<div>
</div>
</form>
</body>
</html> webform1.aspx.csusing System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace work083
{
public partial class WebForm1 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
Response.Write("字符串类型转换<br>");
Response.Write("1.在NET Framework2.0之前,将字符串转换为数值型常使用Pares()方法<br>");
int.Parse("123");
char.Parse("a");
bool.Parse("True");
Response.Write("如果类型不一致就会抛出异常,会对性能造成影响<br>");
Response.Write("2.在NET Framework2.0之后,可以使用TryPares()替代,减小性能问题。<br>");
string str1 = "123";
string str2 = "ed1";
//out参数,表示可以返回值,b1为true,num1为123
int num1;
bool b1 = int.TryParse(str1,out num1);
//b2 = false, num2 无值
int num2;
bool b2 = int.TryParse(str2, out num2);
Response.Write("3.引用类型的转换<br>");
object d1 = "asd";
//强制转换,类型不一致时会抛出异常
string a1 = (string)d1;
object d2 = "123";
//System.Text.StringBuilder e1 = (System.Text.StringBuilder)d2; //无法将类型为“System.String”的对象强制转换为类型“System.Text.StringBuilder”。
System.Text.StringBuilder e2 = d2 as System.Text.StringBuilder;
Response.Write("4.使用is关键字检查对象的是否兼容<br>");
string p1 = "abcd";
//f1 = true,因为string类使用了接口
bool f1 = p1 is ICloneable;
//f2 = true,因为string类是继承于object
bool f2 = p1 is object;
//f3 = false,因为string类与stringbuilder类之间不存在关系
bool f3 = p1 is System.Text.StringBuilder;
//编码过程中应注意尽量减少装箱和拆箱操作。
//装箱操作是指将值类型转换成引用类型。
//拆箱操作是指将引用类型转换成值类型。
Response.Write("5.使用Server.Transfer()方法<br>");
//使用Server.Transfer方法进行重定向,比使用Response.Redirect()方法性能要高。
Response.Write("6.数据库连接对象的优化<br>");
//使用数据库连接时,始终遵循一条原则,尽可能晚打开数据库连接,尽可能早关闭数据库连接。
//优化方法是可以使用连接池,在webconfig中配置连接池
//Data Source = (local);Initial Catalog = test;User ID = sa;Password = 123456; Pooling = true; Min Pool Size=0; Max Pool Size = 200;
//连接池默认是100,我们可以将最大连接数设置为200,当然也不是设置的越大越好,还有受其他因素限制。
}
}
}
|