protected void Button1_Click(object sender, EventArgs e)
{
string s = null;
this.ChangeString(ref s);
this.TextBox1.Text = s;
}
protected void ChangeString(ref string s)
{
s = "C#高级编程";
}
从上面的代码得出的结果,string 是可空类型,不知道这个结论对不.
{
string s = null;
this.ChangeString(ref s);
this.TextBox1.Text = s;
}
protected void ChangeString(ref string s)
{
s = "C#高级编程";
}
从上面的代码得出的结果,string 是可空类型,不知道这个结论对不.
只有对值类型而言,才存在可空值类型
比如int,bool,Point等
引用类型是可以赋值null的,string是引用类型.NET2.0加入了可空类型,解决了值类型赋值null的问题,用?就可以了int ? aa=null;创建一个可空类型的整形变量。下面的是另一种写法System.Nullable<int> bb=null;
protected void Button1_Click(object sender, EventArgs e)
{
string s = "";
this.ChangeString(s);
this.TextBox1.Text = s;
}
protected void ChangeString(string s)
{
s = "C#高级编程";
}
执行完的结果TextBox的值还是空串 protected void Button1_Click(object sender, EventArgs e)
{
try
{
DataTable dataTable = new DataTable();
this.GetData(dataTable);
this.GridView1.DataSource = dataTable;
this.GridView1.DataBind();
}
catch (Exception ex)
{
throw ex;
}
}
public void GetData(DataTable dataTable)
{
try
{
using (SqlConnection sqlConn = new SqlConnection("server=localhost;database=northwind;uid=sa;pwd=sa"))
{
sqlConn.Open();
SqlCommand sqlCmd = new SqlCommand("Select top 10 * from Customers order by CustomerID",sqlConn);
SqlDataAdapter sqlAdapter = new SqlDataAdapter(sqlCmd);
sqlAdapter.Fill(dataTable);
}
}
catch (Exception ex)
{
throw ex;
}
}
而在这里this.GridView1的记录确有了,为什么都是返回值类型,结果却不同呢?
发表于:2008-08-03 15:43:045楼 得分:0
有这样一个实验,它的实参就改变了.
protected void Button1_Click(object sender, EventArgs e)
{
string s = "";
this.ChangeString(s);
this.TextBox1.Text = s;
}
protected void ChangeString(string s)
{
s = "C#高级编程";
}
执行完的结果TextBox的值还是空串 protected void Button1_Click(object sender, EventArgs e)
{
try
{
DataTable dataTable = new DataTable();
this.GetData(dataTable);
this.GridView1.DataSource = dataTable;
this.GridView1.DataBind();
}
catch (Exception ex)
{
throw ex;
}
}
public void GetData(DataTable dataTable)
{
try
{
using (SqlConnection sqlConn = new SqlConnection("server=localhost;database=northwind;uid=sa;pwd=sa"))
{
sqlConn.Open();
SqlCommand sqlCmd = new SqlCommand("Select top 10 * from Customers order by CustomerID",sqlConn);
SqlDataAdapter sqlAdapter = new SqlDataAdapter(sqlCmd);
sqlAdapter.Fill(dataTable);
}
}
catch (Exception ex)
{
throw ex;
}
}
而在这里this.GridView1的记录确有了,为什么都是引用类型,参数的传递方式却有所不同呢?