【轉】C#編譯器錯誤 CS0246綜述

原文地址:https://support.microsoft.com/zh-cn/kb/304656


症狀
編譯代碼時,會出現下列錯誤消息:
找不到類型或命名空間名稱 <類型 / 命名空間>(是否缺少 using 指令或程序集引用?)

其中 <類型 / 命名空間> 是您要使用的類型或命名空間的名稱。
原因
可能會出現此錯誤的原因有多種:
  • 可能拼錯了您要使用的類型或命名空間的名稱。 若名稱不正確,編譯器就無法找到您在代碼中引用的類型或命名空間的定義。 這種情況經常發生,因爲 C# 是區分大小寫的,而您在引用類型時未能使用正確的大寫。例如,請看下面的代碼:
    
    Dataset ds;
    這就會產生編譯器錯誤 CS0246。 請注意 Dataset 中的“s”沒有大寫。
  • 如果錯誤是對命名空間的引用,則可能沒有項目中引用到的命名空間所在的程序集。 例如,您可能在使用下列命名空間:
    
    using Accessibility;
    然而,如果沒有項目中引用到的程序集 Accessibility.dll,就會出現編譯器錯誤 CS0246。
  • 如果錯誤是對類型的引用,那麼可能沒有適當的 using 指令,或者可能沒有完全限定的類型名稱。 請看下面一行代碼:
    
    DataSet ds;
    爲了能夠使用 DataSet 類型,您需要有兩個東西。 首先,需要對包含 DataSet 類型定義的程序集的引用。 其次,需要針對 DataSet 所在命名空間的 using 指令。 例如,因爲 DataSet 位於 System.Data 命名空間,所以在代碼文件的開始處需要有下面的語句:
    
    using System.Data;
    不需要第二個步驟。 然而,如果您省略了這一步驟,那麼在引用 DataSet 類型時需要對它進行完全限定。 對它進行完全限定指的是每次在代碼中引用它時都使用命名空間和類型。 因此,如果決定省略第二個步驟,那麼需要將聲明代碼更改爲:
    
    System.Data.DataSet ds;
解決方案
出現此編譯器錯誤後,首先要檢查拼寫是否正確。 如上文所述,最常見的原因是沒有正確區分類型或命名空間的大小寫。 如果您確信類型或命名空間的名稱拼寫正確(包括大小寫也正確),那麼請檢查下面幾項:
  1. 程序集引用: 

    確保引用了包含命名空間的程序集。 如果是在 Visual Studio .NET 中進行開發,則可以轉到項目菜單並單擊添加引用。 在 .NET 選項卡上,選擇包含您要導入的命名空間的程序集,或者瀏覽到包含程序集的文件夾。 如果在使用命令行編譯器,則向編譯語句中添加相應的開關 (/reference)。
  2. 命名空間: 

    將 using 語句放在包含類型引用的代碼文件的頂端,確保在將命名空間導入項目,如下所示:
    
    using System.Data;
    如果沒有 using 語句,則完全限定對類型的引用:
    
    System.Data.DataSet ds;
狀態
這種現象是設計使然。
屬性

文章 ID:304656 - 上次審閱時間:12/06/2015 04:27:47 - 修訂版本: 1.0

  • Microsoft Visual C# .NET 2002 標準版
  • kbnosurvey kbarchive kbprb kbcompiler kbprod2web KB304656

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章