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

그게 작동합니다.

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

을하지만이 작동하지 않습니다 : C#에서 그래서 내 코드는 다음과 같이됩니다. 나는 네임 스페이스를 가져 오는 것을 잊지 않았다. 그리고 지금은 궁금해하고 있습니다. 그 둘 사이에는 어떤 차이가 있습니까?

편집 : 그리고 난 결국 내 C# 코드로

ed = New Foo.Edit(); 

을 추가 할 수 있지만 그것은 또한 작동하지 않습니다. IMHO, 나는 VBEX에서 자동으로 변수들을 초기화 할 수있는 기능이 있다고 생각한다. 사실입니까?

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#에서는 변수를 초기화해야합니다. (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 

이것은 당신이 이름을 통해 나에 의해 두 종류 MyLibrary.Foo.Index을 사용할 수 있도록, "범위"단순히 Foo.Index 말의 MyLibrary를 네임 스페이스 정렬을 넣습니다. C#은 이것을 허용하지 않습니다. MyLibrary.Foo을 가져 오거나 코드에서 전체 이름을 참조해야합니다.

1

C#은 대소 문자를 구분합니다.그래서

ed = New Foo.Edit(); 

ed = new Foo.Edit(); 
관련 문제