Co globalny :: oznacza w C#? na przykład, jaka jest różnica międzyco globalny :: oznacza w języku C#
private global::System.Int32 myInt;
i
private int myInt;
Dzięki
Co globalny :: oznacza w C#? na przykład, jaka jest różnica międzyco globalny :: oznacza w języku C#
private global::System.Int32 myInt;
i
private int myInt;
Dzięki
To namespace „globalne” - zmusza kompilator szukać nazwy bez podejmowania innych dyrektyw pomocą pod uwagę . Na przykład, załóżmy, że miałem:
public class Bar{}
namespace Foo
{
public class Bar {}
public class Test
{
static void Main()
{
Bar bar1 = null; // Refers to Foo.Bar
global::Bar bar2 = null; // Refers to the "top level" Bar
}
}
}
Zasadniczo jest to sposób na uniknięcie kolizji nazewnictwa - jesteś najbardziej prawdopodobne, aby zobaczyć go w narzędzia wygenerowany kod, gdzie narzędzie nie musi znać wszystkie inne typy w system. Rzadko potrzeba go w ręcznie napisanym kodzie.
Zobacz "How to: Use the global namespace alias" na stronie MSDN, aby uzyskać więcej informacji, wraz z ::
namespace qualifier.
Jest to alias przestrzeni nazw globalnych.
Jeśli zadeklarujesz typ o nazwie System.Int32
w swojej bazie kodowej, możesz rozróżnić wbudowany .NET, używając tego aliasu.
// your code
namespace System
{
public class Int32
{
}
}
// You could reference the BCL System.Int32 like this:
global::System.Int32 bclInt;
System.Int32 myInt;
Zobacz How to: Use the Global Namespace Alias (C# Programming Guide) na MSDN.
Twoje 'Int32' to' global :: System.Int32': twoja przestrzeń nazw 'System' nie jest zagnieżdżona. Również przestrzenie nazw nie mają widoczności. – hvd
@hvd: Oczywiście, że przestrzenie nazw mają * widoczność *; muszą mieć * widoczność *, ponieważ mogą być * ukryte *, a * ukryta * przestrzeń nazw jest z definicji nie * widoczna *. Myślę, że chciałeś powiedzieć, że przestrzenie nazw nie mają * dostępności *, ale to jest dziwny sposób na określenie dostępności przestrzeni nazw; lepszym sposobem myślenia jest to, że * wszystkie przestrzenie nazw mają publiczny dostęp *. –
@EricLippert Przyznaję, że nigdy nie słyszałem o ukrytych przestrzeniach nazw. Po sprawdzeniu: czy odnosisz się do przestrzeni nazw w zewnętrznym zestawie zawierającym tylko wewnętrzne klasy? Jeśli tak, Visual Studio i kompilator C# nie zgadzają się, czy są widoczne: 'using System.Data.Entity.Internal;' jest podkreślany jako błąd, ale akceptowany przez kompilator. Nie wiem, co mówi spec. – hvd
Służy do odnoszenia się do globalnej przestrzeni nazw. Jest to przydatne, jeśli piszesz kod w przestrzeni nazw, która już istnieje w innym miejscu.
Zobacz to o więcej informacji: http://msdn.microsoft.com/en-us/library/c3ay4x3d.aspx
To prawda, jest on generowany przez Entity Framework firmy Microsoft, podczas próby wygenerowania kodu out z .edmx pliku. Wielkie dzięki – user1010572