Как распоряжаться полем - PullRequest
0 голосов
/ 27 октября 2019

Я недавно начал использовать анализатор кода и OOOO! мальчик у меня много нарушений лол. большинство из них однозначно, я проводил свои исследования, и до сих пор мне удалось избавиться от некоторых. однако я думаю, что исчерпал крошечный ум, который я получил, поэтому помогите кому-либо.

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

   public partial class Form1 : Form 

   {

     private readonly Label CompPany = new Label();

    private readonly SpeechRecognitionEngine _recognizer = 
    new SpeechRecognitionEngine(new System.Globalization.CultureInfo("en- 
    US"));

   }

Мне нужно знать, как избавиться от такого поля

Ответы [ 2 ]

1 голос
/ 27 октября 2019

Форма уже реализует IDisposable. Все, что вам нужно сделать, это переопределить Dispose (bool) и вызвать _recognizer.Dispose (), если утилизация имеет значение true:

public partial class Form1 : Form 
{
    private readonly SpeechRecognitionEngine _recognizer = 
        new SpeechRecognitionEngine(new System.Globalization.CultureInfo("en-US"));

    protected override void Dispose (bool disposing)
    {
        if (disposing)
        {
            _recognizer.Dispose();
        }
        base.Dispose(disposing);
    }
}

Таким образом, всякий раз, когда форма удаляется, также удаляется созданный SpeechRecognitionEngine.

0 голосов
/ 27 октября 2019

Метод Dipose предоставляется интерфейсом IDisposable, только объекты, реализующие этот интерфейс, будут иметь этот метод. Используйте этот метод, чтобы закрыть или освободить неуправляемые ресурсы, такие как файлы, потоки и дескрипторы, содержащиеся в экземпляре класса, который реализует этот интерфейс. По соглашению этот метод используется для всех задач, связанных с освобождением ресурсов, удерживаемых объектом, или подготовкой объекта к повторному использованию. SpeechRecognitionEngine реализует IDisposable, тогда у него есть метод Dispose. См. официальные документы для получения дополнительной информации. Если вместо этого вы пытаетесь также утилизировать Form, тогда он уже реализует IDisposable, просто переопределите его так:

public partial class Form1 : Form 
{
    private readonly SpeechRecognitionEngine _recognizer = 
        new SpeechRecognitionEngine(new System.Globalization.CultureInfo("en-US"));

    protected override void Dispose (bool disposing)
    {
        if (disposing)
        {
            _recognizer.Dispose();
        }
        base.Dispose(disposing);
    }
}
...