在VB.NET和&amp ;;之间创建实例的区别C#

时间:2011-09-22 08:08:10

标签: c# vb.net instantiation

我正在将一些代码从VB.NET转换为C#。在VB.NET中,我有这段代码:

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: 似乎我需要显示所有代码。但我也需要直接和你谈谈(或者你只是安装我的软件)。这让我很困惑。谢谢你们。对不起这种新手问题。

6 个答案:

答案 0 :(得分:2)

类C语言(如C#)要求您至少遵循[类型] [变量名称]的模式。 C#使用最简单的初始化形式,要求您​​使用new关键字。

一个简单的C#类定义:

class Foo
{
    public Foo()
    {
    }
}

然后,初始化一个实例:

Foo myFooIsStrong = new Foo();

答案 1 :(得分: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();

答案 2 :(得分:1)

我不太明白你在问什么,但这可能会有所帮助。 VB auto初始化了很多变量而c#没有。 所以在c#中你应该初始化你的变量。

答案 3 :(得分:1)

问题是vb.net让你导入名称空间根,而C#要求你导入完整名称空间。你的VB代码在顶部有一个这样的语句:

Imports MyLibrary

这会将MyLibrary命名空间排在“范围内”,这样您就可以通过全名或简单地说MyLibrary.Foo.Index来使用Foo.Index类型。 C#不允许这样做。您还必须导入MyLibrary.Foo或在代码中引用整个名称。

答案 4 :(得分:1)

C#区分大小写。所以

ed = New Foo.Edit();

应该是

ed = new Foo.Edit();

答案 5 :(得分:0)

这是一个例子

using IndexServer;

...

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

不知道这些课程的样子,很难告诉你更多。但实例化基本相同,只需要更改一些语法来声明变量。