Ваш код почти в порядке, но если вы немного измените свой код, вы сможете делать то, что хотите.Это ваш код с небольшим изменением:
public class AnswerCmd : IDisposable
{
public static void tst()
{
using (AnswerCmd var = new AnswerCmd())
{
var.add(5);
}
}
public void add(int value)
{
Console.WriteLine($"Add: {value}");
}
public void Dispose()
{
//throw new NotImplementedException();
}
}
Вы должны объявить переменную AnswerCmd var
в вашем операторе using в типе вашего класса, а затем после создания и присваивания и возражать против него следующим образом AnswerCmd var = new AnswerCmd()
вызовите ваш add
метод, подобный этому var.add()
.
Если вы хотите узнать больше об этом и почему вы должны это сделать, я должен сказать, что это потому, что ваш tst
метод static и ваш add
метод нестатическая .Нестатические методы предназначены только для объектов вашего класса, и вы не можете вызывать их, если не создали объект из этого класса.Когда вы вызываете нестатический метод напрямую, не создавая объект, это синтаксическая ошибка.
Вы также должны удалить или прокомментировать throw new NotImplementedException();
в Dispose
методе, потому что ваш метод будет выбрасывать и Exception
приВы оставляете использование.
Это хорошо, если вы посетите эту ссылку и узнаете больше о различиях между статическими и нестатическими методами.