использование ключевого слова «using» в c # [duplicate]

Когда вы вызываете конструктор, инициализаторы переменной экземпляра запускаются перед телом конструктора. Что вы думаете о выходе программы ниже?

public class Tester {
    private Tester internalInstance = new Tester();
    public Tester() throws Exception {
        throw new Exception("Boom");
    }
    public static void main(String[] args) {
        try {
            Tester b = new Tester();
            System.out.println("Eye-Opener!");
        } catch (Exception ex) {
            System.out.println("Exception catched");
        }
    }
}

Основной метод вызывает конструктор Tester, который выдает исключение. Вы могли бы ожидать, что предложение catch поймает это исключение и выведет Исключение, пойманное . Но если вы попытались запустить его, вы обнаружили, что он ничего не делает, и он выбрасывает StackOverflowError.

13
задан Naruto 20 November 2009 в 09:34
поделиться

14 ответов

Два использования:

  • Использование директив , например

     using System;
    используя System.IO;
    using WinForms = global :: System.Windows.Forms;
    using WinButton = WinForms :: Button;
    

    Они используются для импорта пространств имен (или создания псевдонимов для пространств имен или типов). Они идут вверху файла перед любыми объявлениями.

  • Использование операторов например,

     using (Stream input = File.OpenRead (filename))
    {
     ...
    }
    

    Это может использоваться только с типами, реализующими IDisposable , и является синтаксическим сахаром для блока try / finally, который вызывает Dispose в блоке finally. Это используется для упрощения управления ресурсами.

25
ответ дан 1 December 2019 в 17:24
поделиться

ключевое слово using может использоваться для импорта (связывания) пространства имен или библиотеки с нашей программой. Таким образом, мы можем использовать функции, доступные в этих библиотеках, в нашей программе. Это что-то вроде ссылки

Пример: using System.IO

Это означает, что мы собираемся использовать некоторые функции, присутствующие в этой библиотеке

Вы можете написать свою собственную библиотеку и импортировать ее с помощью оператора using. Пример:

namespace MyProject.MyNamspace
{
 public class MyCustomClass
 {
  public static string MyFunctionToSmile()
  {
   return "He he he heeee";
  }   
}

}

и на странице ur c # используйте эту

using MyProject.MyNamspace

public class MyClass
{
 protected void Page_Load(object sender, EventArgs e)
 {
  Response.Write(MyCustomClass.MyFunctionToSmile());
 } 
}

Круто ...!

0
ответ дан 1 December 2019 в 17:24
поделиться

использование может использоваться для:

  • «импорта» пространств имен, то есть использования их
  • создания псевдонима для типа (например, typedef ] еще в дни c ++)
  • удаляйте объект сразу после его использования
0
ответ дан 1 December 2019 в 17:24
поделиться

Существует два разных использования ключевого слова с использованием в C #:

  1. Для объявления неявной области пакета, например, «using System»;
  2. Для вызова метода Dispose () объекта IDisposable.

В последнем случае using (myVar) {} является сокращением для:

IDisposable disposable = (IDisposable)myVar;
try
{
   // your code here
}
finally
{
   if (disposable != null)
      disposable.Dispose();
}
0
ответ дан 1 December 2019 в 17:24
поделиться

Есть два варианта использования ключевого слова using:

  • как директива using , которая разрешает использование типов в пространстве имен. Например: с использованием System.Web
  • в качестве оператора using , что возможно только для типов, унаследованных от IDisposable . Это автоматически вызывает метод Dispose () объекта после того, как оператор using выходит за пределы области видимости, поэтому вам не нужно беспокоиться об автоматическом вызове этого метода самостоятельно или вызове Close () для подключений к базе данных, например:

    using (MySqlConnection connection = new MySqlConnection ()) { // .. }

1
ответ дан 1 December 2019 в 17:24
поделиться

MSDN - лучший выбор

http://msdn.microsoft.com/en-us/library/yh598w02%28VS.80%29.aspx

.. но там есть много ресурсов ..

http://blogs.msdn.com/cyrusn/archive/2005/05/10/415956.aspx

1
ответ дан 1 December 2019 в 17:24
поделиться

"using" ключевое слово может также может использоваться для создания псевдонимов типов. Здесь Item - это псевдоним словаря. Такой подход может сэкономить вам немного времени при вводе:)

Например,

using Item = System.Collections.Generic.Dictionary<string, string>;
namespace Sample
{
    using Records = Dictionary<int, Item>;
    public class Controller
    {
      Records recordDictionary = new Records();
    }
}
3
ответ дан 1 December 2019 в 17:24
поделиться

Есть три использует:

Я не верю, что может объяснить более четко, чем в общих чертах статьи MSDN. Если у вас возникли проблемы с их пониманием, возможно, вам лучше задать более конкретный вопрос о деталях, которых вы не понимаете.

3
ответ дан 1 December 2019 в 17:24
поделиться

Есть два использования ключевого слова.

Первое - когда вам лень вводить System.Web.UI.WebControls.TextBox , которое вы добавляете используя System.Web.UI.WebControls в верхней части файла кода и впредь просто пишите TextBox . Это все, что он делает - сокращает код, который вам нужно написать (и упрощает его чтение).

Другой имеет отношение к интерфейсу IDisposable . Этот интерфейс предназначен для объектов, которые необходимо очистить после того, как вы закончите их использовать. Например, файлы, которые нужно закрыть, или соединения с БД, и тому подобное. Вы можете просто вызвать метод Dispose () , где бы это ни было, но это упростит задачу. Вкратце, это:

using (var X = new MyObject())
{
    // Code goes here
}

эквивалентно этому:

var X = new MyObject();
try
{
    // Code goes here   
}
finally
{
    if ( X != null )
        X.Dispose();
}

И снова - это ' Сокращение для фрагмента кода, который гарантирует, что в любом случае будет вызван метод Dispose () . Даже когда ваш код генерирует исключение или вы возвращаете из метода, метод Dispose () будет вызван. Это гарантирует, что вы случайно не оставите файлы открытыми или что-то в этом роде.

В общем, если вы когда-либо используете объект, реализующий интерфейс IDisposable , поместите его в с помощью блока .

4
ответ дан 1 December 2019 в 17:24
поделиться

Я полагаю, вы говорите об блоке управления using, а не об операторе using [namespace]. По сути, ключевое слово - это синтаксический сахар для безопасной инициализации и удаления объектов. Он работает с любым объектом, реализующим IDisposable. Следующее:

using(MyType obj = new MyType())
{
  ... do stuff.
}

эквивалентно:

MyType obj = new MyType();
try
{
  .... do stuff
}
finally
{
  if(obj != null)
  {
      obj.Dispose();
  }
}
7
ответ дан 1 December 2019 в 17:24
поделиться

использование имеет два значения в C #:

  • использование для IDisposable означает, что когда блок использования заканчивается Dispose метод будет вызван.
  • использование для пространства имен означает, что типы из импортированного пространства имен будут ссылаться в коде.

Базовый пример того, как работает использование блока:

A " dummy "одноразовый класс:

public class DisposableClass : IDisposable
{
    public static bool WasDisposed { get; private set;}

    public void Dispose()
    {
        WasDisposed = true;
    }
}

Какой-то очень простой код, который демонстрирует, когда вызывается Dispose:

[Test]
public void DisposeSample()
{
    using (var disposableClass = new DisposableClass())
    {
        Assert.IsFalse(DisposableClass.WasDisposed);
    }

    Assert.IsTrue(DisposableClass.WasDisposed);
}
11
ответ дан 1 December 2019 в 17:24
поделиться

Уверен, что где-то будет дубликат этого ... однако в Короче говоря, using используются для определения объема создаваемого объекта. Объект удаляется после выхода из блока using, т.е. Dispose вызывается автоматически.

См. using Statement (C #) для получения дополнительных сведений.

2
ответ дан 1 December 2019 в 17:24
поделиться

Это дает вам простой способ очистить ресурсы после того, как вы закончите с ними. С конструкцией using , когда вы закончите использовать ресурсы, они автоматически освобождаются. Он даже очищает ресурсы в случае исключения.

2
ответ дан 1 December 2019 в 17:24
поделиться
Другие вопросы по тегам:

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