【问题标题】:Converting Code Snippet from C# to VB.NET将代码片段从 C# 转换为 VB.NET
【发布时间】:2010-03-07 09:13:30
【问题描述】:

所有自动化的在线转换器都无法转换此代码。不幸的是,我对 C# 的简短了解也让我失望了。代码来源于博客,链接自another of my questions

这里是C#中的sn-p代码;

        var virtualFileDataObject = new VirtualFileDataObject();
        virtualFileDataObject.SetData(new VirtualFileDataObject.FileDescriptor[]
        {
            new VirtualFileDataObject.FileDescriptor
            {
                Name = "abc.txt",
                StreamContents = stream =>
                    {
                        using(var webClient = new WebClient())
                        {
                            var data = webClient.DownloadData("http://www.google.com");
                            stream.Write(data, 0, data.Length);
                        }
                    }
            },
        });

我目前在 VB.NET 中(删除了一些内联的东西);

    Dim virtualFileDataObject = New VirtualFileDataObject()
    Dim vf As New VirtualFileDataObject.FileDescriptor()

    vf.Name = "abc.txt"
    vf.StreamContents = ??

    Using webc As New WebClient()
        Dim data = webc.DownloadData("http://www.google.com")
        stream??.Write(data, 0, data.Length)
    End Using

    virtualFileDataObject.SetData(vf)

非常感谢您的帮助!

【问题讨论】:

    标签: c# vb.net code-conversion


    【解决方案1】:

    StreamContents 使用匿名方法设置,VB.NET 不支持该方法(但在 .NET 4.0 中出现的 VB.NET 10 中支持)。我可以建议的下一个最好的事情是:

    vf.StreamContents = AddressOf(MyStreamContents)
    
    Public Sub MyStreamContents(ByVal stream As <Whatever the type is>)
    
      Using webc As New WebClient()
            Dim data = webc.DownloadData("http://www.google.com")
            stream.Write(data, 0, data.Length)
        End Using
    
    End Sub
    

    【讨论】:

    • 酷,现在 Action(of ) 是有意义的——代表。如何将 URL 参数传递给 MyStreamContents 以代替硬编码的 Google URL?
    • 您可以使用在Sub外部声明的变量,例如字段或全局变量。
    猜你喜欢
    • 1970-01-01
    • 2012-10-17
    • 2012-02-09
    • 2010-11-19
    • 2016-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多