将此代码转换为Vb.net

时间:2016-08-22 10:37:40

标签: c#-to-vb.net

我无法将此代码转换为vb.net。请帮我。谢谢。

using System;
using System.ComponentModel;
using System.Runtime.CompilerServices;

namespace RssReader.Common
{
/// <summary>
/// Provides a standard change-notification implementation.
/// </summary>
public abstract class BindableBase : INotifyPropertyChanged
{
    public event PropertyChangedEventHandler PropertyChanged;

    public void OnPropertyChanged([CallerMemberName] string propertyName = null) => 
        PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));

    protected bool SetProperty<T>(ref T storage, T value,
        [CallerMemberName] String propertyName = null)
    {
        if (object.Equals(storage, value)) return false;
        storage = value;
        OnPropertyChanged(propertyName);
        return true;
    }
}
}

我无法将此代码转换为vb.net。非常感谢你

1 个答案:

答案 0 :(得分:1)

没有你需要这个类的上下文(它毕竟只是一个片段,我试图为你执行一个可编译的转换。这意味着编译器说语法是正确的。基于我的广泛知识VB.NET和我不断增长的C#技能我认为这可能是你需要的解决方案。

大多数代码转换器在这里错过的真正问题是,当您在VB.NET中为参数指定默认值时,必须使用关键字&#34; Optional&#34;在它面前。对他们不利的是,大多数转换器也将属性定义放在单词Byval之前和单词Optional之后,这是不正确的。要正确使变量可选,必须将该关键字直接放在Byval之前。因此,属性定义的唯一位置是在Optional之前。

买者。 现在,编译器喜欢我写的内容,但我不知道它是否适用于您无法访问调用它的更广泛代码库的上下文。

希望这有帮助,Code在下面。

Imports System
Imports System.ComponentModel
Imports System.Runtime.CompilerServices

Namespace RssReader.Common
    ''' <summary>
    ''' Provides a standard change-notification implementation.
    ''' </summary>
    Public MustInherit Class BindableBase
        Implements INotifyPropertyChanged

        Public Event PropertyChanged As PropertyChangedEventHandler Implements INotifyPropertyChanged.PropertyChanged

        Public Sub OnPropertyChanged(<CallerMemberName> Optional ByVal propertyName As String = Nothing)
            PropertyChangedEvent?.Invoke(Me, New PropertyChangedEventArgs(propertyName))
        End Sub

        Protected Function SetProperty(Of T)(ByRef storage As T, ByVal value As T, <CallerMemberName> Optional ByVal propertyName As String = Nothing) As Boolean
            If Object.Equals(storage, value) Then
                Return False
            End If
            storage = value
            OnPropertyChanged(propertyName)
            Return True
        End Function
    End Class
End Namespace