2017-06-14 39 views
0

了問題,在Form1.cs的我的C#代碼:使用類從另一個類C#

using sonep = session.Broker; 
using maind = ClassLibrary1.Personn; 

sonep boi = new sonep(); 

public partial class Form1 : Form 
{ 
    public Form1() 
    { 
     InitializeComponent(); 
    } 

    private void Form1_Load(object sender, EventArgs e) 
    { 
     maind p = new maind(); 
     p.Nom = txtnom.Text; 
     p.Prenom = txtprenom.Text; 
     boi.Insert(p);    
    } 
} 

我發現了這一點,但不要讓我:

https://docs.microsoft.com/fr-fr/dotnet/csharp/language-reference/keywords/using-directive

+1

問題在於「boi」 – sok

+0

那麼,什麼問題?你有錯誤嗎? – jhhoff02

+1

如果'boi'是一個變量,它不能被聲明在一個類或方法的範圍之外。 – dcg

回答

1

你不能把sonep boi = new sonep();就像你所做的那樣,在課堂範圍之外的任您正在嘗試創建名爲boisonep類型的對象。

這是應該的:

private void Form1_Load(object sender, EventArgs e) 
{ 
    maind p = new maind(); 
    p.Nom = txtnom.Text; 
    p.Prenom = txtprenom.Text; 
    sonep boi = new sonep(); 
    boi.Insert(p); 
} 
+1

哦,好的!謝謝 ! – sok

+0

@sok沒問題,我很高興它現在適合你 –

1

在你的文件的頂部代碼:

using sonep = session.Broker; 

using maind = ClassLibrary1.Personn; 

sonep boi = new sonep(); 

有一些問題。類範圍之外的空間是您將定義using指令的地方,以此來「導入」要在此類中使用的名稱空間。你永遠不會在類的範圍之外實例化類。通常using指令將尋找以下兩種方法之一:

using sonep = session.Broker; //this creates an alias for the namespace 
using ClassLibrary1.Personn; //This just imports the namespace as is 

後,你的類的範圍內是要實例化類實例:

private void Form1_Load(object sender, EventArgs e) 
{ 
    sonep boi = new sonep(); //Instantiate like this 
    maind p = new maind(); //You already Instantiate an object here 
    p.Nom = txtnom.Text; 
    p.Prenom = txtprenom.Text; 
    boi.Insert(p); 
} 
+1

我明白你的觀點,你的解決方案是正確的,但是你可以使用sonep = Session.Broker;如果sonep是一個類在'Session.Broker'命名空間 –

+1

中使用sonep = session.Broker創建一個別名。看到這個https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/using-directive更多的細節 – Gareth

+0

@Gareth謝謝你,這是exaclty我想說的 –

0

sonep boi = new sonep(); 

建議您嘗試創建類型爲sonep的新對象。另一個例子是

MyObject myObj = new MyObject(); 

但是,這可能是任何東西;舉例來說,如果你有一個蘋果的對象,需要直徑和顏色,你可以instansiate像這樣

Apple myApple = new Apple(5, "red"); 

然而

using sonep = session.Broker; 

建議你想創建與using指令的別名。舉例來說,如果你有很長的名字,因爲你就可以做到這一點

Project.MyClass mc = new Project.MyClass(); 

而不是必須這樣做

MyNamespace.MyCompany.Project.MyClass mc = new MyNamespace.MyCompany.Project.MyClass(); 

如果」

using Project = MyNamespace.MyCompany.Project; 

這個技術是很有用重新嘗試實例化類型爲sonep的新對象時,您必須在您的課堂中進行此操作。例如,

private void Form1_Load(object sender, EventArgs e) 
{ 
    sonep boi = new sonep(); 
    ... 
} 

或者,如果您嘗試爲名稱空間創建別名,則無法實例化它。