2011-09-22 8 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(); 

しかし、これは動作しません。私は名前空間をインポートすることを忘れないと確信しています。そして、今私は疑問に思っています、それらの2つの間に違いはありますか?

EDIT: そして私はようやく私のC#のコードに

ed = New Foo.Edit(); 

を追加し、それはまた、動作しません。 IMHO、VB.NETには、変数の自動初期化を可能にする機能があると思います(Bexのコメントのように)。本当ですか?

最終: すべてのコードを表示する必要があるようです。しかし、私はあなたと直接話をする必要があります(またはあなたは私のソフトウェアをインストールするだけです)。それは私を本当に混乱させます。皆さん、ありがとうございました。このような初心者の質問には申し訳ありません。

+7

する必要があります 'しかし、それは' C#で動作しません。さて、VBコードですが、C#でどのように動作すると思いますか?:-それらは構文が異なる2つの異なる言語です。 –

+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#では変数を初期化する必要があります。 (C#のような)

+0

あなたはどんな情報源でそれを明確にすることができますか?それは私の問題 – riandp

+0

ermに関連しているように思えます..よく彼らは数ヶ月前にコースで私に言った!だから、私はコースノートの中で紙に書いています..!私は素早くgoogleの後に何かを見つけることができません!あなたが知る必要があることは、C#で何かを宣言するときに、ObjectType a = new ObjectTypeを使って初期化する必要があることです。 ObjectTypeだけではなく、 VBは自動的に値を割り当て、C#は自動的にnullを割り当てます! – Bex

2

C-ような言語を使用すると、最低でも[タイプ] [変数名]のパターンに従う必要。 C#では、最も簡単な初期化形式を使用して、newというキーワードを使用する必要があります。

シンプルなC#クラスの定義:

class Foo 
{ 
    public Foo() 
    { 
    } 
} 

はその後、インスタンスを初期化する:

Foo myFooIsStrong = new Foo(); 
1

問題は、C#はあなたを必要としているときに、名前空間のルートをインポートvb.netレッツ・インポートすることです完全な名前空間あなたのVBコード上部に、このような文があります。

Imports MyLibrary 

をこれは、あなたが完全な名前を介して、または単にFoo.Indexを言うことによって、どちらのタイプMyLibrary.Foo.Indexを使用することができるような「範囲内」のてMyLibrary名前空間の並べ替えを、置きます。 C#ではこれを許可していません。 MyLibrary.Fooをインポートするか、コード内の名前全体を参照する必要があります。

1

C#は大文字と小文字を区別します。だから、

ed = New Foo.Edit(); 

ed = new Foo.Edit(); 
関連する問題