Разница между «использованием MyNameSpace»; и "пространство имен MyNameSpace" - PullRequest
3 голосов
/ 09 августа 2010

Здравствуйте, я новичок в asp.net. Я запутался, в чем разница между «использованием MyNameSpace»; и "пространство имен MyNameSpace". Мой демонстрационный код выглядит следующим образом ...

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

с использованием MyNameSpace ;

пространство имен MyNameSpace

{
    public partial class DemoPage : System.Web.UI.Page
    {
        My code here
    }
}

В приведенном выше коде есть разница между двумя выделенными утверждениями или нет. Если да, то что это?

Заранее спасибо ...

Ответы [ 3 ]

5 голосов
/ 09 августа 2010

Да, они предоставляют дополнительные услуги.

A, используя следующую директиву:

using MyNamespace;

Указывает компилятору искать в пространстве имен MyNamespace при разрешении простых имен - так что если выесли у вас есть тип MyNamespace.Foo, вы можете просто использовать Foo в своем источнике, чтобы ссылаться на него, когда вы получите это с помощью директивы.

Однако пространство имен объявление эффективно говорит, «Все, что я объявляю в этом блоке, находится в заданном пространстве имен».Таким образом, чтобы объявить тип MyNamespace.Foo, вы должны использовать:

namespace MyNamespace
{
    public class Foo
    {
        ...
    }
}

Понимаете?Директива using говорит, что вы хотите использовать вещи в определенном пространстве имен, тогда как объявление пространства имен о размещении вещей в определенном пространстве имен.

0 голосов
/ 09 августа 2010

Да, есть разница. Оператор namespace используется для создания пространства имен, а оператор using используется для того, чтобы компилятор распознал уже существующее пространство имен.

В вашем коде оператор using не действует, так как весь ваш код находится в этом пространстве имен, поэтому он уже знает об этом.

Поскольку у вас есть using System.Web.UI, идентификатор System.Web.UI.Page может быть записан как Page, так как компилятор знает о классах в этом пространстве имен. Если у вас не будет этого оператора using, вам понадобится полное имя, чтобы компилятор знал, где найти класс.

0 голосов
/ 09 августа 2010

using используется для создания «ярлыка» для названий типов в этом пространстве имен. Это необходимо только тогда, когда код, который вы пишете, находится в другом пространстве имен. namespace используется для определения пространства имен:

Пример
В файле first.cs:

// define the namespace "SomeNamespace"
namespace SomeNamespace
{
    // define a type within the namespace
    class SomeClass { }
}

В файле second.cs:

using SomeNamespace;
// define the namespace "OtherNamespace"
namespace OtherNamespace
{
    class OtherClass
    {
        void SomeMethod()
        {
            // use the type "SomeClass", defined in the "SomeNamespace" namespace
            // note that without the using directive above we would need to write
            // SomeNamespace.SomeClass for this to work.
            SomeClass temp = new SomeClass();
        }
    }
}

В приведенном выше примере кода объявление переменной temp не обязательно должно включать пространство имен, поскольку оно упоминается в директиве using.

...