Pra*_*ant 10 c# oop class instance
我正在使用C#.我创建了一个可以包含在任何c#.net项目中的类(基于桌面或基于Web),但我希望在我的类的应用程序中只创建10个对象.如果对象实例创建超过10,那么它应该给出错误或简单不起作用.
可能有两种情况,
在这两种情况下,如果在应用程序中创建了超过10个类的实例,则必须通过错误.
这个问题是我的老师问的,他告诉我在互联网上搜索答案,我试过但没有找到解决这个问题的方法,我还没有听说过我们可以限制对象?
是否可能,如果是,那么如何?
谢谢
Dav*_*kle 19
保留一个静态变量,其中包含创建的实例数.随着对象的每个构造增加该数字.使对象IDisposable并在每次调用Dispose()时减少该数字.如果您希望它是线程安全的,请使用Interlocked.Increment()和Interlocked.Decrement()来更改此变量的值,而不是++和 - .
您只需要使用带有创建实例数的计数器的工厂模式,之后工厂方法将抛出异常/返回null.
例:
public class Foobar
{
private static int numInstances = 0;
public static Foobar CreateFoobar()
{
if (numInstances++ < 10)
{
return new Foobar();
}
return null;
}
protected Foobar()
{
...
}
}
Run Code Online (Sandbox Code Playgroud)
上面的方法对单实例应用程序非常有效,但对于多实例应用程序,您可能希望使用信号量(存在实现System.Threading),这种情况适用于这种情况(限制访问)资源/对象).它解决了几乎同时请求类的多个实例的问题,并且计数检查失败.