如果我没有指定命名空间,我的类会在哪个命名空间中?

3

如果我在我的类中没有放置命名空间(VS.NET 2008),那么我的类会建立在哪个命名空间下?

更新 奇怪的是,当我添加一个命名空间时,我似乎无法从我的用户控件引用类的方法。

如果我明确设置一个命名空间,并在我的控件中添加一个“using…”,我仍然无法看到它!

这是怎么回事?

    using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Configuration;
/// <summary>
/// Summary description for Globals
/// </summary>
public class Globals
{
    public Globals()
    { }


    public static string ConnectionString
    {
        get
        {
            return ConfigurationManager.ConnectionStrings["MyDb"].ConnectionString;
        }
    }

}

我的控制器:

using System;
using System.Data;
using System.Data.SqlClient;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;


public partial class MyStats : System.Web.UI.UserControl
{




    protected void Page_Load(object sender, EventArgs e)
    {


    //etc.

好的,我发布了一些代码。在全局类中,我有一个命名空间,但是当我在控件中引用它时,它仍然无法工作。 - Blankman
无法引用,重命名也无效。 - Blankman
这两种类型是否在不同的程序集中? - Andrew Hare
但它们是否在不同的程序集中? - Andrew Hare
请查看我原回答的编辑。 - Andrew Hare
显示剩余5条评论
2个回答

4
如果您不提供命名空间,则您的类型将没有命名空间。请记住,命名空间在编译后没有任何意义。它们只是附加到您类型名称的开头,以创建一个更长的名称,具有更大的可能性是唯一的。
编辑:我认为您可能有两个单独的程序集,其中一个应该引用另一个,但实际上并没有。如果两个项目在单个解决方案中,则类查看器将显示所有项目的所有类型,但这并不一定意味着 ProjectA 引用了 ProjectB。为了在 ProjectA 中使用 ProjectB 的类型,您需要确保存在项目引用。

"...那么你的类型没有命名空间" 不完全正确,它们被放置在全局命名空间中 http://msdn.microsoft.com/en-gb/library/z2kcy19k.aspx - weston

1

正如你所说,这个类将不会有任何命名空间,它可以在没有using语句的情况下访问。

命名空间是一种用于对类进行分类和归类的功能特性,主要根据其功能而分类。

编辑

根据你的更新,我认为你的“global”类可能会因为global::子句而出现问题... 你介意更改类的名称以查看是否有效吗?


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接