有没有办法防止在C#中创建具有静态实例的类.我不认为有,但它可能有用.例如,只是一些属性来防止它.
这样的事情
[NoStaticInstances]
public class MyClass {
}
Run Code Online (Sandbox Code Playgroud)
以便
public static MyClass _myClass;
Run Code Online (Sandbox Code Playgroud)
会导致错误吗?
没有"静态实例"这样的东西 - 只有一个静态变量,它被赋值.除非你将类型本身设置为静态,否则无法阻止声明特定类型的静态变量,这将阻止创建任何实例并声明该类型的任何变量.
想象一下,如果您所需的功能确实存在...您希望以下代码如何表现?
class Test
{
static object foo;
static void Main()
{
MyClass bar = new MyClass();
foo = bar;
}
}
Run Code Online (Sandbox Code Playgroud)
哪一行会导致错误,如果有的话?如果是作业,请想象一下:
class Test
{
static object foo;
static void Main()
{
MyClass bar = new MyClass();
object tmp = bar;
foo = tmp;
}
}
Run Code Online (Sandbox Code Playgroud)
简而言之,我认为您无法阻止静态变量保存对类实例的引用.出于兴趣,你为什么要来?