Csharp/CSharp Tutorial/Language Basics/Namespace
Содержание
- 1 Creates a namespace with a single class
- 2 Declare a namespace
- 3 Demonstrate a namespace.
- 4 Demonstrate the :: qualifier.
- 5 Full qualify name
- 6 Namespace Introduction
- 7 Namespaces are additive.
- 8 Namespaces can be nested
- 9 Namespaces prevent name conflicts
- 10 Namespace with dot
- 11 Rename the namespaces
- 12 Same class name under different Namespaces
- 13 Simplest namespace with class definition
- 14 The use of namespace hierarchies
- 15 The use of two namespaces
- 16 Two levels of Namespaces
- 17 Use fully qualified class name
Creates a namespace with a single class
<source lang="csharp">using System; namespace StringSwitch {
class MySwitch { }
} //////////////////////////////////////////// using System; using StringSwitch; class MainClass {
public static void Main() { string localString; MySwitch s = new MySwitch(); }
}</source>
Declare a namespace
<source lang="csharp">namespace Counter {
class MyClass { }
}</source>
Demonstrate a namespace.
<source lang="csharp">using System;
namespace Counter {
class MyClass { }
}
class MainClass {
public static void Main() { Counter.MyClass my = new Counter.MyClass(); }
}</source>
Demonstrate the :: qualifier.
<source lang="csharp">using System;
using Counter; using AnotherCounter;
// Give Counter an alias called Ctr. using Ctr = Counter;
namespace Counter {
class MyClass { }
}
namespace AnotherCounter {
class MyClass { }
}
class MainClass {
public static void Main() { Ctr::MyClass m = new Ctr::MyClass(); }
}</source>
Full qualify name
For example, the line
<source lang="csharp">Console.WriteLine("A simple C# program.");</source>
Namespace Introduction
- The namespace provides a way to keep one set of names separate from another.
- Names declared in one namespace will not conflict with the same names declared in another.
- The namespace System is reserved for items in the .NET Framework class library.
- The using keyword simply states that the program is using the names in the given namespace.
1.5.Namespace 1.5.1. Namespace Introduction 1.5.2. <A href="/Tutorial/CSharp/0020__Language-Basics/Fullqualifyname.htm">Full qualify name</a> 1.5.3. <A href="/Tutorial/CSharp/0020__Language-Basics/Simplestnamespacewithclassdefinition.htm">Simplest namespace with class definition</a> 1.5.4. <A href="/Tutorial/CSharp/0020__Language-Basics/Declareanamespace.htm">Declare a namespace</a> 1.5.5. <A href="/Tutorial/CSharp/0020__Language-Basics/Demonstrateanamespace.htm">Demonstrate a namespace.</a> 1.5.6. <A href="/Tutorial/CSharp/0020__Language-Basics/Usefullyqualifiedclassname.htm">Use fully qualified class name</a> 1.5.7. <A href="/Tutorial/CSharp/0020__Language-Basics/TwolevelsofNamespaces.htm">Two levels of Namespaces</a> 1.5.8. <A href="/Tutorial/CSharp/0020__Language-Basics/Namespacewithdot.htm">Namespace with dot</a> 1.5.9. <A href="/Tutorial/CSharp/0020__Language-Basics/Renamethenamespaces.htm">Rename the namespaces</a> 1.5.10. <A href="/Tutorial/CSharp/0020__Language-Basics/Namespacespreventnameconflicts.htm">Namespaces prevent name conflicts</a> 1.5.11. <A href="/Tutorial/CSharp/0020__Language-Basics/Namespacesareadditive.htm">Namespaces are additive.</a> 1.5.12. <A href="/Tutorial/CSharp/0020__Language-Basics/Namespacescanbenested.htm">Namespaces can be nested</a> 1.5.13. <A href="/Tutorial/CSharp/0020__Language-Basics/Demonstratethequalifier.htm">Demonstrate the :: qualifier.</a> 1.5.14. <A href="/Tutorial/CSharp/0020__Language-Basics/Theuseoftwonamespaces.htm">The use of two namespaces</a> 1.5.15. <A href="/Tutorial/CSharp/0020__Language-Basics/Theuseofnamespacehierarchies.htm">The use of namespace hierarchies</a> 1.5.16. <A href="/Tutorial/CSharp/0020__Language-Basics/Createsanamespacewithasingleclass.htm">Creates a namespace with a single class</a> 1.5.17. <A href="/Tutorial/CSharp/0020__Language-Basics/SameclassnameunderdifferentNamespaces.htm">Same class name under different Namespaces</a>
Namespaces are additive.
<source lang="csharp">using System;
using Counter;
namespace Counter {
class MyClass { }
}
namespace Counter {
class MySecondClass { }
}
class MainClass {
public static void Main() { MyClass m = new MyClass(); MySecondClass cu = new MySecondClass(); }
}</source>
Namespaces can be nested
<source lang="csharp">using System;
namespace NS1 {
class ClassA { public ClassA() { Console.WriteLine("constructing ClassA"); } } namespace NS2 { // a nested namespace class ClassB { public ClassB() { Console.WriteLine("constructing ClassB"); } } }
}
class MainClass {
public static void Main() { NS1.ClassA a = new NS1.ClassA(); NS1.NS2.ClassB b = new NS1.NS2.ClassB(); }
}</source>
constructing ClassA constructing ClassB
Namespaces prevent name conflicts
<source lang="csharp">using System;
namespace Counter {
class MyClass { public MyClass(){ Console.WriteLine("Counter1 namespace."); } }
}
namespace Counter2 {
class MyClass { public MyClass() { Console.WriteLine("Counter2 namespace."); } }
}
class MainClass {
public static void Main() { // This is CountDown in the Counter namespace. Counter.MyClass m1 = new Counter.MyClass(); // This is CountDown in the default namespace. Counter2.MyClass m2 = new Counter2.MyClass(); }
}</source>
Counter1 namespace. Counter2 namespace.
Namespace with dot
<source lang="csharp">namespace Outer.Inner {
class MyClass { public static void Function() {} }
}</source>
Rename the namespaces
<source lang="csharp">using ThatConsoleClass = System.Console; class MainClass {
public static void Main() { ThatConsoleClass.WriteLine("Hello"); }
}</source>
Hello
Same class name under different Namespaces
<source lang="csharp">using System; namespace Foo {
public class Money { public Money() { } public void Print( ) { Console.WriteLine("Foo.Money.Print"); } }
} namespace Bar {
public class Money { public Money( ) { } public void Print( ) { Console.WriteLine("Bar.Money.Print"); } }
}
public class MainClass {
public static void Main( ) { Foo.Money fm = new Foo.Money(); Bar.Money bm = new Bar.Money(); fm.Print( ); bm.Print( ); }
}</source>
Foo.Money.Print Bar.Money.Print
Simplest namespace with class definition
A namespace is declared using the namespace keyword.
The general form of namespace is shown here:
<source lang="csharp">namespace name {
// members }</source>
The use of namespace hierarchies
<source lang="csharp">namespace CompanyName {
namespace UserInterface // nested namespace { public class MyClass { public void Test() { System.Console.WriteLine("UserInterface Test()"); } } }
}
namespace CompanyName.DatabaseAccess // nested namespace using dot {
public class MyClass { public void Test() { System.Console.WriteLine("DatabaseAccess Test()"); } }
}
class MainClass {
public static void Main() { CompanyName.UserInterface.MyClass myUI = new CompanyName.UserInterface.MyClass(); CompanyName.DatabaseAccess.MyClass myDB = new CompanyName.DatabaseAccess.MyClass(); CompanyName.DatabaseAccess.MyClass myMT = new CompanyName.DatabaseAccess.MyClass(); myUI.Test(); myDB.Test(); myMT.Test(); }
}</source>
UserInterface Test() DatabaseAccess Test() DatabaseAccess Test()
The use of two namespaces
<source lang="csharp">namespace CompanyName {
public class Car { public string make; }
} namespace DifferentCompany {
public class Car { public string make; }
} class MainClass {
public static void Main() { System.Console.WriteLine("Creating a CompanyName.Car object"); CompanyName.Car myCar = new CompanyName.Car(); myCar.make = "Toyota"; System.Console.WriteLine("myCar.make = " + myCar.make); System.Console.WriteLine("Creating a DifferentCompany.Car object"); DifferentCompany.Car myOtherCar = new DifferentCompany.Car(); myOtherCar.make = "Porsche"; System.Console.WriteLine("myOtherCar.make = " + myOtherCar.make); }
}</source>
Creating a CompanyName.Car object myCar.make = Toyota Creating a DifferentCompany.Car object myOtherCar.make = Porsche
Two levels of Namespaces
<source lang="csharp">namespace Outer {
namespace Inner { class MyClass { public static void Function() {} } }
}</source>
Use fully qualified class name
<source lang="csharp">class Example {
public static void Main() { // Console.WriteLine is fully qualified. System.Console.WriteLine("A simple C# program."); }
}</source>
A simple C# program.