ASP.NET WEB控件命名低级错误一例
搞程序的人都知道变量的命名不要与语言关键字冲突,我今天还遇到一个ASP.NET WEB控件命名带来的问题,这个问题容易把人搞蒙。
我创建了一个名为“File.aspx”的页面,并在代码页使用“File”类,按照常规操作,先在代码页页头导入“System.IO”命名空间,结果在代码正文发现File类点不出其常见的方法来,即使手动书写一段正确的File类操作代码,都是无法编译通过的,会报File类后面加的那个方法不包含在File类中,这段出错的代码如下:
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.IO;
public partial class File : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
StreamReader sr = File.OpenText(Server.MapPath(".")+"\\Table.sql");
}
}
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.IO;
public partial class File : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
StreamReader sr = File.OpenText(Server.MapPath(".")+"\\Table.sql");
}
}
细心的你也许已经发现问题所在了,就是此时出现了两个File类,一个是System.IO.File,另一个则是新建WEB页面的时候自动生成与文件名同名的类public partial class File,此时就导致代码正文StreamReader sr = File这里的File类定义不明确了,此时在IDE中的自动提示显示的是public partial class File类下面的成员,所以一开始说的问题就出现了。
知道问题出在那里,解决办法自然也就找到了。解决办法之一就是要时刻提醒自己不要使建立的WEB页面文件名与代码中要使用的类重名,另外一个更科学的办法就是使用命名空间全称或命名空间别名,如下面那样:
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.IO;
public partial class File : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
StreamReader sr = System.IO.File.OpenText(Server.MapPath(".")+"\\Table.sql");
}
}
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.IO;
public partial class File : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
StreamReader sr = System.IO.File.OpenText(Server.MapPath(".")+"\\Table.sql");
}
}
这个问题显然简单,但是稍微粗心会使你认为是.NET框架出了问题或者是VS IDE出了问题,值得注意!
作者:WebFlash
出处:http://webflash.cnblogs.com
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
出处:http://webflash.cnblogs.com
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。