Как оператор “Using” переводит от C# до VB?

Нет способа сделать это. На самом деле, Twitter не предоставляет URL для этого, как это делает Facebook ( https://graph.facebook.com/ /? Fields = picture)

Проблема в том, что отчет, но Статус: 'WontFix', посмотрите:

https://code.google.com/p/twitter-api/issues/detail?can=2&start=0&num= 100 & амп; д = & амп; colspec = идентификатор% 20Stars% 20Type% 20Bug% 20Status% 20Summary% 20Opened% 20Modified% 20Component & амп; GroupBy = & амп; вроде = & амп; ID = 242 # makechanges

46
задан Daniel 5 January 2015 в 16:22
поделиться

4 ответа

Использование в VB имеет практически тот же синтаксис, что и C #, при условии, что вы используете .NET 2.0 или новее (что подразумевает компилятор VB.NET v8 или новее). По сути, просто удалите фигурные скобки и добавьте «Завершить использование»

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 или более раннюю версию, вам понадобится следующий код. Оператор using не был представлен до VS 2005, .NET 2.0 ( ссылка ). Спасибо, Крис !. Следующее эквивалентно оператору 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
64
ответ дан 26 November 2019 в 20:30
поделиться

Важно отметить, что using фактически компилируется в различные строки кода, аналогично блокировке и т. Д.

Из спецификации языка C # .... Оператор using вида

using (ResourceType resource = expression) statement

соответствует одному из двух возможных расширений. Когда ResourceType является типом значения, расширение равно

{
    ResourceType resource = expression;
    try {
        statement;
    }
    finally {
        ((IDisposable)resource).Dispose();
    }
}

В противном случае, когда ResourceType является ссылочным типом, раскрытие будет

{
    ResourceType resource = expression;
    try {
        statement;
    }
    finally {
        if (resource != null) ((IDisposable)resource).Dispose();
    }
}

(фрагмент спецификации конечного языка)

В основном, во время компиляции его преобразование в этот код. Не существует метода с именем using и т. Д. Я попытался найти похожие вещи в спецификации языка vb.net, но ничего не смог найти, по-видимому, он делает то же самое.

5
ответ дан 26 November 2019 в 20:30
поделиться

Ключевым моментом является то, что "используемый" класс должен реализовывать интерфейс IDisposable.

3
ответ дан 26 November 2019 в 20:30
поделиться

Это будет примерно так:

Dim bitmap As New BitmapImage()
Dim buffer As Byte() = GetHugeByteArray()
Using stream As New MemoryStream(buffer, False)
    bitmap.BeginInit()
    bitmap.CacheOption = BitmapCacheOption.OnLoad
    bitmap.StreamSource = stream
    bitmap.EndInit()
    bitmap.Freeze()
End Using
3
ответ дан 26 November 2019 в 20:30
поделиться