c# - "Using"语句如何从 C# 转换为 VB?

标签 c# .net vb.net visual-studio-2005 .net-2.0

例如:

BitmapImage bitmap = new BitmapImage();

byte[] buffer = GetHugeByteArray(); // from some external source
using (MemoryStream stream = new MemoryStream(buffer, false))
{
    bitmap.BeginInit();
    bitmap.CacheOption = BitmapCacheOption.OnLoad;
    bitmap.StreamSource = stream;
    bitmap.EndInit();
    bitmap.Freeze();
}

你能告诉我更多关于使用的信息吗?

编辑:

正如在 JaredPar 的帖子的评论中所讨论的,这个问题更关心的是 Using 在 VS2003 中的实现。有人指出 Using 直到 .NET 2.0 (VS2005) 才被引入。 JaredPar 发布了等效的解决方法。

最佳答案

假设您使用的是 .NET 2.0 或更高版本(这意味着 VB.NET v8 编译器或更高版本),在 VB 中使用实际上与 C# 相同的语法。基本上,只需删除大括号并添加“结束使用”

Dim bitmap as New BitmapImage()
Dim buffer As Byte() = GetHugeByteArrayFromExternalSource()
Using stream As New MemoryStream(buffer, false)
    bitmap.BeginInit()
    bitmap.CacheOption = BitmapCacheOption.OnLoad
    bitmap.StreamSource = stream
    bitmap.EndInit()
    bitmap.Freeze()
End Using

你可以在这里得到完整的文档

编辑

如果您使用的是 VS2003 或更早版本,则需要以下代码。直到 VS 2005,.NET 2.0 ( reference ) 才引入 using 语句。谢谢克里斯!以下等同于using语句。

Dim bitmap as New BitmapImage()
Dim buffer As Byte() = GetHugeByteArrayFromExternalSource()
Dim stream As New MemoryStream(buffer, false)
Try
    bitmap.BeginInit()
    bitmap.CacheOption = BitmapCacheOption.OnLoad
    bitmap.StreamSource = stream
    bitmap.EndInit()
    bitmap.Freeze()
Finally
    DirectCast(stream, IDisposable).Dispose()
End Try

关于c# - "Using"语句如何从 C# 转换为 VB?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/887831/

相关文章:

c# - SharePoint Web 部件和单例

c# - Emgu 无法在 IIS 服务器中找到 cvextern

c# - .net 中任务的说明

java - 在单个客户端上执行两个 HTTPS POST 调用 - Java 到 Vb.Net

c# - 在 C#/Mono 中序列化至 Adob​​e AMF 或从 Adob​​e AMF 序列化?

c# - 从单词列表中替换字符串中的多个单词

c# - WCF 中的 MessageHeader 问题

c# - Blazor:降低/消除图表的动画速度

vb.net - 与 VB .net Lambdas 斗争

c# - 通过 VB.NET 在 C# 中的集合