本博客文章标题如未标有转载、转等字匀属本人原创或演绎作品,是采用知识共享署名-非商业性使用-相同方式共享 2.5进行许可,承蒙转摘请保留署名及出处,谢谢! 影评|CSDN博客

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");
    }
}

细心的你也许已经发现问题所在了,就是此时出现了两个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");
    }
}

这个问题显然简单,但是稍微粗心会使你认为是.NET框架出了问题或者是VS IDE出了问题,值得注意!

posted @ 2009-07-11 21:51  问道者  阅读(351)  评论(0编辑  收藏  举报