防止在C#中创建具有静态实例的类

Pau*_*son 3 c# static class

有没有办法防止在C#中创建具有静态实例的类.我不认为有,但它可能有用.例如,只是一些属性来防止它.

这样的事情

[NoStaticInstances]
public class MyClass {
}
Run Code Online (Sandbox Code Playgroud)

以便

public static MyClass _myClass;
Run Code Online (Sandbox Code Playgroud)

会导致错误吗?

Jon*_*eet 9

没有"静态实例"这样的东西 - 只有一个静态变量,它被赋值.除非你将类型本身设置为静态,否则无法阻止声明特定类型的静态变量,这将阻止创建任何实例并声明该类型的任何变量.

想象一下,如果您所需的功能确实存在...您希望以下代码如何表现?

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)

简而言之,我认为您无法阻止静态变量保存对类实例的引用.出于兴趣,你为什么来?