2011-09-22 52 views
0

我將一些代碼從VB.NET轉換爲C#。在VB.NET中,我有這樣的代碼:在VB.NET和C之間創建實例的區別#

Dim ind As Foo.Index 
Dim ed As Foo.Edit 
ind = New Foo.Index 
ed = ind.InFunction() 

這是行得通的。所以在C#中,我的代碼如下所示:

Foo.Index ind; 
Foo.Edit ed; 
ind = New Foo.Index(); 
ed = ind.InFunction(); 

但是這不起作用。我相信我不會忘記導入命名空間。現在我一直在想,這兩者之間有什麼區別?

編輯: 我最後加

ed = New Foo.Edit(); 

到我的C#代碼,但它也不起作用。恕我直言,我認爲在VB.NET中有一個功能允許在變量中進行自動初始化(如下面的建議Bex的評論)。這是真的嗎?

FINAL: 似乎我確實需要顯示所有的代碼。但是我也需要直接和你談談(或者你只是安裝我的軟件)。這讓我非常困惑。謝謝你們。對不起,這種新手問題。

+7

'但是,它並沒有在C#中工作'。那麼,這是VB代碼,我想知道你如何在C#中工作:-)這是兩種不同的語言,具有不同的語法。 –

+0

你試過這個嗎? http://www.developerfusion.com/tools/convert/vb-to-csharp/ –

+1

C#代碼的外觀如何? –

回答

0

下面是一個例子

using IndexServer; 

... 

IndexServer ix = new IndexServer(); 
ClientInfo ci = new ClientInfo(); 
EditInfo ed = ix.checkoutSord(ci, Konstanta.EDIT_INFO.mbSord, Konstanta.LOCK.NO); 

不知道什麼這些類的樣子,很難告訴你更多。但實例化基本相同,只需要更改一些聲明變量的語法即可。

1
//instantiation 

IndexServer.ClientInfo ci = new IndexServer.ClientInfo(); 

IndexServer.IXServicePortC konst = new IndexServer.IXServicePortC(); 

IndexServer.IndexServer ix = new IndexServer.IndexServer(); 

IndexServer.EditInfo ed = new IndexServer.EditInfo(); 
1

我不太明白你在問什麼,但這可能有幫助。 VB自動初始化很多變量,而c#不會。所以在C#中,你應該初始化你的變量。

+0

你能澄清,與任何來源?好像它和我的問題 – riandp

+0

有關......好吧,他們幾個月前就告訴了我這個課程!所以我在課堂筆記裏寫在紙上。快速谷歌後我找不到任何東西!所有你需要知道的是,當你在c#中聲明某些東西時,你必須通過ObjectType a = new ObjectType來初始化它;而不僅僅是ObjectType a; VB自動分配一個值,C#自動分配爲空! – Bex

2

類似C語言(如C#)需要你追蹤[類型] [變量名]的圖案在最小值。 C#使用最簡單的初始化形式,要求您​​使用new關鍵字。

一個簡單的C#類定義:

class Foo 
{ 
    public Foo() 
    { 
    } 
} 

然後,初始化一個實例:

Foo myFooIsStrong = new Foo(); 
1

的問題是,vb.net,讓我們在導入命名空間的根,而C#要求您導入完整的命名空間。您的VB代碼中有這樣的語句在頂部:

Imports MyLibrary 

這使在MyLibrary命名空間之類的「範圍」,這樣您可以通過全名或使用類型MyLibrary.Foo.Index只是說Foo.Index。 C#不允許這樣做。您還必須導入MyLibrary.Foo或在代碼中引用整個名稱。

1

C#區分大小寫。所以

ed = New Foo.Edit(); 

應該

ed = new Foo.Edit(); 
相關問題