2015-02-11 73 views
9

我是C#的新手,MS視覺工作室,我想使用在其他文件中定義的C#類,但無法使其工作。如何在C#中使用Visual Studio中的其他文件使用類?

這裏是program.cs(爲什麼我不能重命名文件?)

using System; 

namespace TestCSharp2 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      Class2 class2 = new Class2(); 
      // here the IDE will complain that cant find namespace or balabala.. 
      class2.setValue(10); 
      Console.WriteLine(class2.getValue().ToString()); 
      Console.ReadKey(); 
     } 
    } 
} 

這裏是Class2,我想在文件Class2.cs使用方法:

namespace TestCSharp2 
{ 
    class Class2 
    { 
     int i; 
     public void setValue(int i) 
     { 
      this.i = i; 
     } 
     public int getValue() 
     { 
      return this.i; 
     } 
    } 
} 

我應該#include什麼的?是不是use namespace夠了?

enter image description here


正如一些人問,如果他們是在同一程序/同一個項目,我假定他們,因爲這裏是他們是如何創建的過程:

  • 使用模板控制檯C#項目的新項目,則默認情況下創建program.cs
  • 使用[文件] - > [新建] - > [文件] - > [C#類]創建Class2.cs,並將其保存在program.cs所在的同一文件夾中。

說實話,我不知道他們是在同一裝配/同一項目,但我想他們。

+0

他們都住在同一個大會嗎?還喜歡使用Properties而不是get/set方法。 C#不是java :) – 2015-02-11 08:24:15

+0

它們在同一個項目中嗎?所以當他們編譯時,他們最終在同一個二進制文件?如果他們在單獨的項目中,則需要將第一個項目引用爲第二個。 – cjb110 2015-02-11 08:25:10

+0

感謝您關於getter/setter的建議,但我不知道您的意思是*相同的程序集*。 – armnotstrong 2015-02-11 08:26:28

回答

8

根據您的解釋,您的項目中沒有包含您的Class2.cs。您剛剛創建了所需的Class文件,但未包含在該項目中。

使用[File] - > [New] - > [File] - > [C#class]創建Class2.cs,並保存在program.cs所在的同一文件夾中。

執行以下操作以您的項目克服這一點,

只需Right click然後 - > [添加] - > [現有項...]:選擇Class2.cs,然後按OK

問題應該現在解決。

此外,添加新的類時,使用此過程,

Right click項目 - > [添加] - >選擇所需的項目(例如 - 類,表格等)

+0

感謝您的幫助,但是有沒有更好的方式來創建一個文件,默認情況下它屬於同一個項目,每次創建文件時引用它都不是一個好方法,我想。 – armnotstrong 2015-02-11 08:54:25

+0

我的答案的後者部分提供了這些信息:) ..問候 – 2015-02-11 08:55:08

+1

再次感謝,我認爲這是項目導航在右側,而不是左側,這與以前使用的IDE不同,我爲什麼忽略它:-) – armnotstrong 2015-02-11 09:01:39

1

根據你們這裏的例子,它們似乎都駐留在同一個命名空間中,我斷定它們都是同一個項目的一部分(如果你還沒有創建具有相同命名空間的另一個項目) 和所有class by默認被定義爲它們在其中定義的項目的內部,如果沒有另外聲明,因此我猜問題是你的文件沒有包含在你的項目中。您可以通過在解決方案資源管理器窗口中右鍵單擊該文件來包含它:=>包含在項目中,如果在解決方案資源管理器中無法看到項目文件內的文件,則單擊顯示解決方案資源管理器的上層菜單按鈕show all files (只是你繩拉鼠標光標移到按鈕那裏,你會看到按鈕的名稱)

只是爲了基本知識: 如果文件駐留在不同的項目\組件則必須定義,否則它必須至少定義爲內部或公共。 萬一你的類繼承自該類,它也可以被保護。

4

如果我們能看到實際的項目結構,這對我們來說會更有益,因爲單獨的類別不會說太多。

假設兩個.cs文件在同一個項目中(如果它們在同一解決方案中的不同項目中,則必須添加對包含Class2的項目的引用。cs),您可以點擊代碼中Class2出現在紅色下劃線並按CTRL + (期間)或點擊應該在那裏的藍色欄。出現的第一個選項將自動添加適當的using語句。如果沒有這樣的菜單,則可能表明項目結構有問題或缺少參考。

你可以嘗試做Class2public,但它聽起來像是這不可能是一個問題在這裏,因爲默認情況下,你的所作所爲是internal class Class2,因此Class2如果兩者都住在同一個項目/組件應該可以訪問。如果您正在引用其中包含Class2的其他程序集或項目,則必須將其設置爲public才能訪問它,因爲類不能從其程序集外部訪問。

至於重命名:您可以在解決方案資源管理器中單擊Program.cs,然後按F2重命名它。然後它會打開一個對話窗口詢問你是否應該重新命名類Program本身及其所有引用,這通常是你想要的。或者你可以在聲明中重命名類Program並再次打開帶有小藍條的菜單(或者,再次,CTRL + )並且執行相同操作,但不會自動重命名實際的相應地文件

在您的問題編輯後編輯:我從來沒有使用過這個選項,但從快速檢查我認爲它不是在同一個項目中。向項目添加新類時執行以下操作:在解決方案資源管理器中,右鍵單擊您創建的項目並選擇[添加] - > [類別]或[添加] - > [新項目...],然後選擇'類」。這將自動使新項目成爲項目的一部分,從而使組件(組裝基本上是構建項目後的'最終產品')。對我而言,還有快捷方式替代 + 移位 + C正在創建一個新類。

+0

如何爲鍵盤快捷鍵添加漂亮的'按鈕'圖形?我總是忘記... – InvisiblePanda 2015-02-11 08:33:13

+0

你可以在我的編輯中找到它:-D – 2015-02-11 08:35:01

+0

@SriramSakthivel非常感謝,我必須寫這下降某處... :) – InvisiblePanda 2015-02-11 08:40:12

1

是啊,我只是做了相同的'noob'錯誤,並發現此線程。 我實際上已經將課程添加到解決方案中,而不是添加到項目中。 因此,它看起來像這樣:

Wrong and right

enter image description here

希望只是增加這是有幫助的人。

0
namespace TestCSharp2 
{ 
    **public** class Class2 
    { 
     int i; 
     public void setValue(int i) 
     { 
      this.i = i; 
     } 
     public int getValue() 
     { 
     return this.i; 
     } 
    } 
} 

在'class class2'之前添加'Public'聲明。

相關問題