У меня может быть другой тип объектов в C# *использующий* блок?

using (Font font3 = new Font("Arial", 10.0f), 
           font4 = new Font("Arial", 10.0f))
{
    // Use font3 and font4.
}

Я знаю, что несколько объектов того же типа могут использоваться в пункте использования.

Наклон я использую различные типы объектов в пункте использования?

Хорошо я попробовал, но хотя они были различными именами и различными объектами, они действовали, то же = имело тот же набор методов

Там какой-либо другой путь состоит в том, чтобы использовать класс использования с различными типами?

В противном случае, что самый соответствующий путь состоит в том, чтобы использовать его?

5
задан Ranhiru Jude Cooray 23 June 2010 в 00:59
поделиться

7 ответов

using(Font f1 = new Font("Arial",10.0f))
using (Font f2 = new Font("Arial", 10.0f))
using (Stream s = new MemoryStream())
{

}

Так?

28
ответ дан 18 December 2019 в 05:12
поделиться

Вы можете инициализировать только один тип объекта в каждом с использованием блока . Однако вы можете вкладывать их сколько угодно:

using (Font font3 = new Font("Arial", 10.0f))
{
    using (Brush b4 = new Brush())
    {

    }
}
3
ответ дан 18 December 2019 в 05:12
поделиться

Нет, вы не можете сделать это таким образом, но вы можете вложить в , используя блоки.

using (Font font3 = new Font("Arial", 10.0f))
{ 
    using (Font font4 = new Font("Arial", 10.0f))
    {
        // Use font3 and font4.
    }
}

или, как говорили другие, но я бы не рекомендовал это из-за удобочитаемости.

using(Font font3 = new Font("Arial", 10.0f))
using(Font font4 = new Font("Arial", 10.0f))
{
    // use font3 and font4
}
10
ответ дан 18 December 2019 в 05:12
поделиться

Вы можете разделять запятыми элементы одного и того же типа - ну, все, что я знаю, это то, что компилятор не жалуется. Вы также можете складывать, используя операторы () (используйте один набор скобок {}) разных типов.

http://adamhouldsworth.blogspot.com/2010/02/things-you-dont-know.html

3
ответ дан 18 December 2019 в 05:12
поделиться

Цель оператора using состоит в том, чтобы гарантировать, что полученные ресурсы явно удаляются с помощью вызова метода Dispose , предоставляемого интерфейсом IDisposable . Спецификация не позволяет вам получать ресурсы разных типов внутри одного оператора using, но имея в виду первое предложение, вы можете написать этот совершенно корректный код в терминах компилятора.

using (IDisposable d1 = new Font("Arial", 10.0f),
    d2 = new Font("Arial", 10.0f), 
    d3 = new MemoryStream())
{
    var stream1 = (MemoryStream)d3;
    stream1.WriteByte(0x30);
}

Тем не менее, Я не рекомендую это и считаю это оскорбительным, поэтому этот ответ просто заявляет, что вы можете взломать его, но, вероятно, не должны.

5
ответ дан 18 December 2019 в 05:12
поделиться

Для этого можно складывать с помощью операторов:

using(Font font3 = new Font("Arial", 10.0f))
using(Font font4 = new Font("Arial", 10.0f))
{
    // use font3 and font4
}
6
ответ дан 18 December 2019 в 05:12
поделиться

Их можно вкладывать:

using (Font font3 = new Font("Arial", 10.0f))
using (font4 = new Font("Arial", 10.0f))
{
    // Use font3 and font4.
}

Они должны располагаться в обратном порядке (сначала шрифт font4).

РЕДАКТИРОВАТЬ:

Это в точности то же самое, что и:

using (Font font3 = new Font("Arial", 10.0f))
{
    using (font4 = new Font("Arial", 10.0f))
    {
        // Use font3 and font4.
    }
}
2
ответ дан 18 December 2019 в 05:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: