我正在将一些代码从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: 似乎我需要显示所有代码。但我也需要直接和你谈谈(或者你只是安装我的软件)。这让我很困惑。谢谢你们。对不起这种新手问题。
答案 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);
不知道这些课程的样子,很难告诉你更多。但实例化基本相同,只需要更改一些语法来声明变量。