如何将特定代码行从C#翻译为VB.net

如何将特定代码行从C#翻译为VB.net,c#,vb.net,C#,Vb.net,我在网上发现了非常有前途的代码,我想尝试一下。 由于我的项目是用VB.net编写的,而且所讨论的代码是在C#中,我开始将我需要的零碎翻译到VB.net。 我已经完成了翻译工作,但我无法弄清楚一行特定的代码到底做了什么,以及如何将其翻译到VB.net。 我也不知道如何通过搜索谷歌来找到答案 那么也许你能解释一下C#的神秘主义者 以下是C#源代码(精简到相关位): 公共类TestClass { 私有列表视图列表视图; 公共测试类(ListView输入) { this.listView=输入; thi

我在网上发现了非常有前途的代码,我想尝试一下。 由于我的项目是用
VB.net
编写的,而且所讨论的代码是在
C#
中,我开始将我需要的零碎翻译到VB.net。 我已经完成了翻译工作,但我无法弄清楚一行特定的代码到底做了什么,以及如何将其翻译到VB.net。 我也不知道如何通过搜索谷歌来找到答案

那么也许你能解释一下C#的神秘主义者

以下是C#源代码(精简到相关位):

公共类TestClass
{
私有列表视图列表视图;
公共测试类(ListView输入)
{
this.listView=输入;
this.listView.Loaded+=新路由EventHandler(ListViewLoaded);
this.listView.unload+=新路由EventHandler(ListViewUnload);
}
公共静态只读DependencyProperty EnabledProperty=DependencyProperty.RegisterAttached(
“启用”,
类型(bool),
类型(TestClass),
新的FrameworkPropertyMetadata(新的PropertyChangedCallback(OneEnabledChanged));
私有静态void OnEnabledChanged(DependencyObject对象、DependencyPropertyChangedEventArgs e)
{
ListView输入=对象作为ListView;

新的TestClass(输入);//如果行是隔离的,即:它实际上只是
新的TestClass(输入);
,它可能是用来触发构造函数的一些代码,可能是一些静态初始化

虽然这种做法不好,但您可以将其转换为VB,只需将其存储在临时对象中即可。结果是等效的

因此,代替:
newtestclass(input)


一般来说,关于神秘路线:

private static void OnEnabledChanged(DependencyObject obj, DependencyPropertyChangedEventArgs e)
{
    ListView input = obj as ListView;
    new TestClass(input);   // <== this is the mystic line
}
私有静态void OnEnabledChanged(DependencyObject对象,DependencyPropertyChangedEventArgs e)
{
ListView输入=对象作为ListView;

新TestClass(输入);//
object input=…
这不可能是正确的。但它很重要。请显示完整的行。没有太多内容。更改了描述中的示例代码。这确实让我想知道:您的代码有终结器吗?没有终结器,只有构造函数。好的,那么这些事件永远不会被释放
this.listView.Loaded+=
…这个构造函数中的代码不做任何静态的事情,至少我看不到。它只是将输入参数存储到一个类变量中,并向其附加两个事件。行可以省略-但是:你需要确实确定。我会更新我的答案。我在我的描述中添加了构造函数的代码。啊,对不起,正如我刚才所想的那样;有是应用于
输入的东西吗
…好的,那么你不能省略这一行…但是可以说代码有点混乱。嗯……我想一定是这样的,当我这样做时,我确实调用了新对象上的方法,这就是为什么它被允许的原因。这是有道理的,因为正如建议的那样,创建了一个新对象,而不是将它用于如果那种类型设计得很好的话,你真的不应该做什么,所以我怀疑我会做什么。我想我只是没有意识到是方法调用使
调用
关键字正常。在这种情况下,我收回了我的建议。
Dim temp = New TestClass(input)
private static void OnEnabledChanged(DependencyObject obj, DependencyPropertyChangedEventArgs e)
{
    ListView input = obj as ListView;
    new TestClass(input);   // <== this is the mystic line
}