c# - 如何从 C# 转换为 VB.net
问题描述
对于用 VB.net 编写的项目,我想使用本文PropertyChangeNotifier
中的类,至少我想尝试一下它是否有帮助。
由于原始类是用 C# 编写的,我试图将这个类翻译成 VB.net,但是我无法编译一个函数,我不知道为什么,也许你可以帮忙。
C#中的原始函数是:
private static void OnPropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
PropertyChangeNotifier notifier = (PropertyChangeNotifier)d;
if (notifier.ValueChanged != null)
notifier.ValueChanged(notifier, EventArgs.Empty);
}
我的(稍作改动)翻译(以及几个网站的自动翻译)是:
Private Shared Sub OnPropertyChanged(d As DependencyObject, e As DependencyPropertyChangedEventArgs)
Dim notifier As PropertyChangeNotifier
notifier = TryCast(d, PropertyChangeNotifier)
If (notifier Is Nothing) Then
Exit Sub
End If
RaiseEvent notifier.ValueChanged(notifier, EventArgs.Empty)
End Sub
如果我删除RaiseEvent
编译器告诉我的,那ValueChanged
是一个事件,不能直接调用,我应该使用RaiseEvent
. 但是当我使用RaiseEvent
编译器告诉我
'notifier' 未声明。由于其保护级别,它可能无法访问。
但正如 ylou 所见notifier
,它声明了几行。
解决方案
我自己找到了解决方案。它没有解释错误消息,但至少它正在编译并希望之后可以工作。
我刚刚将它添加到类本身:
Private Sub OnValueChanged(sender As Object, e As EventArgs)
RaiseEvent ValueChanged(sender, e)
End Sub
然后我没有在函数中自己引发事件OnPropertyChanged
,而是调用我的新过程:
Private Shared Sub OnPropertyChanged(d As DependencyObject, e As DependencyPropertyChangedEventArgs)
Dim notifier As PropertyChangeNotifier
notifier = TryCast(d, PropertyChangeNotifier)
If (notifier Is Nothing) Then
Exit Sub
End If
notifier.OnValueChanged(notifier, EventArgs.Empty)
End Sub
推荐阅读
- deep-learning - 如何在 Pytorch 中创建自定义损失函数
- c++ - C++ 中的动态安全二维交错数组
- c - 反向数组(带有 argc 和 argv)+ 如何打印它
- wikipedia - 如何使用 Wikipedia 的搜索选项“deepcat”?
- floating-point - 在 IEEE 754 中减去不同的数字总是非零?
- linux-device-driver - 将 Linux 驱动程序与设备树节点相关联
- c# - 为什么调试包括外部库代码
- kubernetes - 将 Kubernetes 和 Weave CNI 与同一子网中的多个集群一起使用
- php - 如何解码响应不仅仅是 JSON 字符串的 JSON 响应
- operating-system - 在 64 位和 32 位操作系统中,它们有不同的结果