技術(shù)頻道導(dǎo)航
HTML/CSS
.NET技術(shù)
IIS技術(shù)
PHP技術(shù)
Js/JQuery
Photoshop
Fireworks
服務(wù)器技術(shù)
操作系統(tǒng)
網(wǎng)站運(yùn)營

贊助商

分類目錄

贊助商

最新文章

搜索

C#聲明命名空間不能犯的錯(cuò)誤,三種訪問命名空間成員的方法

作者:admin    時(shí)間:2023-4-27 17:43:40    瀏覽:

在 C# 中,命名空間用于在邏輯上安排類、結(jié)構(gòu)、接口、枚舉和委托。C# 中的命名空間可以嵌套,這意味著一個(gè)命名空間也可以包含其他命名空間。.NET 框架已經(jīng)包含許多標(biāo)準(zhǔn)命名空間,如 System、System.Net、System.IO 等。除了這些標(biāo)準(zhǔn)命名空間之外,用戶還可以定義自己的命名空間。

聲明命名空間

C#語言提供了關(guān)鍵字命名空間來創(chuàng)建用戶自定義的命名空間,聲明命名空間的一般形式如下。

namespace <namespace_name>
{
//類、結(jié)構(gòu)、枚舉等
}

其中 namespace 是必需的關(guān)鍵字,命名空間的名稱可以是任何有效的 C# 標(biāo)識(shí)符或以逗號(hào)分隔的標(biāo)識(shí)符組合。

例如:

using System;
namespace Rajesh.Csharp.Codes
{
  class MyClass
  {
    public MyClass()
    {
      Console.WriteLine("My Class");
    }
  }
  class MyClient
  {
    public static void Main()
    {
      MyClass mc = new MyClass();// 顯示 'My Class'
    }
  }
}

聲明命名空間不能犯的錯(cuò)誤

首先,命名空間的名稱可以是任何有效的 C# 標(biāo)識(shí)符或以逗號(hào)分隔的標(biāo)識(shí)符組合,除此之外還要符合一些特定要求。

  1. 不能將任何訪問說明符(如privatepublic等)與命名空間聲明一起使用,C# 中的命名空間隱式具有公共訪問權(quán)限,這是不可修改的。
  2. 命名空間元素不能顯式聲明為私有(private)或受保護(hù)(protected),命名空間只允許公共(public)和內(nèi)部元素作為它的成員,默認(rèn)是內(nèi)部的。

以下代碼無法在 C# 中編譯,因?yàn)槊臻g內(nèi)的類被聲明為私有(private)的。

namespace Rajesh.Csharp.Codes
{
  private class MyClass
  {
  }
}

三種方法訪問命名空間成員

1、使用完全限定名稱

可以使用完全限定名稱訪問命名空間成員,其中包括命名空間名稱和來自命名空間外部的以點(diǎn)(.)分隔的成員名稱。

例如

using System;
namespace Rajesh.Csharp.Codes
{
  class MyClass
  {
    public MyClass()
    {
      Console.WriteLine("My Class");
    }
  }
}
class MyClient
{
  public static void Main()
  {
    //使用完全限定名稱訪問命名空間成員
    Rajesh.Csharp.Codes.MyClass mc = new Rajesh.Csharp.Codes.MyClass();
  }
}

2、使用關(guān)鍵字using

但為了避免開發(fā)人員每次都輸入完全限定名稱,C# 提供了另一個(gè)關(guān)鍵字,用于為命名空間定義一些別名。然后在編寫我們的代碼時(shí),我們只用它們的類名來引用類。在編譯期間,編譯器將映射所有帶有別名的類名以達(dá)到類的完全限定名。找到完全限定名稱后,它用于將代碼轉(zhuǎn)換為 IL 代碼。請(qǐng)記住,在 IL 代碼中,所有類、接口、枚舉和委托都使用它們的完全限定名稱進(jìn)行引用。

使用示例如下所示。

using Rajesh.Csharp.Codes;

MyClass mc = new MyClass();

請(qǐng)記住,在 C# 命名空間內(nèi),可以使用關(guān)鍵字 using

namespace MyNameSpace
{
  using System;
  class MyClass
  {
  }
}

命名空間 MyNameSpace 中包含的任何代碼都可以訪問 System 命名空間而無需完全限定類型名稱,但這些類型不是 MyNameSpace 命名空間的成員。

同一個(gè)命名空間可以跨越多行,如下所示。

using System;

namespace Rajesh.Csharp.Codes
{
  class MyClass
  {
    public MyClass()
    {
      Console.WriteLine("My Class");
    }
  }
}
namespace Rajesh.Csharp.Codes
{
  class MyClient
  {
    public static void Main()
    {
      MyClass mc = new MyClass();
    }
  }
}

3、使用別名

在關(guān)鍵字 using 的幫助下,可以為命名空間或類型創(chuàng)建別名。

例如

using con = System.Console; // 創(chuàng)建別名

class MyClient
{
  public static void Main()
  {
    con.WriteLine("Hey rajesh! how you");
  }
}

嵌套命名空間

在 C# 中,命名空間可以相互嵌套,如下所示。

using System;

namespace Outer
{
  namespace Inner
  {
    class MyClass
    {
      public MyClass()
      {
        Console.WriteLine("My Class");
      }
    }
  }
}
class MyClient
{
  public static void Main()
  {
    Outer.Inner.MyClass mc = new Outer.Inner.MyClass();
  }
}

.NET 中的標(biāo)準(zhǔn)命名空間

以下是 .NET Framework 中的一些標(biāo)準(zhǔn)命名空間。

  • System:包含實(shí)現(xiàn)基本功能的類,如數(shù)學(xué)運(yùn)算、數(shù)據(jù)轉(zhuǎn)換等。
  • System.IO:包含用于文件 I/O 操作的類。
  • System.Net:包含圍繞底層網(wǎng)絡(luò)協(xié)議的類包裝器。
  • System.Collections:包含實(shí)現(xiàn)對(duì)象集合的類,例如列表、哈希表等。
  • System.Data:包含構(gòu)成 ADO.NET 數(shù)據(jù)訪問體系結(jié)構(gòu)的類。
  • System,Drawing:包含實(shí)現(xiàn) GUI 功能的類。
  • System.Threading:包含用于多線程編程的類。
  • System.Web:實(shí)現(xiàn)HTTP協(xié)議訪問網(wǎng)頁的類。
  • System.Xml:用于處理 XML 數(shù)據(jù)的類。

這些是 .NET 框架的一些重要命名空間。請(qǐng)記住,上面的列表并不完整。

總結(jié)

本文介紹了在C#中如何聲明和訪問命名空間,以及一些要注意的問題。

相關(guān)文章

標(biāo)簽: CSharp  命名空間  asp.net  
x
  • 站長推薦
/* 左側(cè)顯示文章內(nèi)容目錄 */