为什么.Net框架类中的静态方法始终是线程安全的?

Sun*_*nil 4 .net c# static-methods thread-safety

我注意到.Net框架文档的大多数地方都有以下声明.

问题:这个秘诀是什么?我不认为静态类总是线程安全的.我的问题涉及.Net框架中可用的标准类,而不是开发人员创建的自定义类.

所有.Net Framework类文档中的线程安全说明

下面的静态类中的方法'GetString'是否是线程安全的,因为该方法是一个静态方法?

public static class MyClass
{
    static int x = 0;

    static MyClass()
    {
        x = 23;
    }

    public static string GetString()
    {
        x++;
        return x.ToString();
    }
}
Run Code Online (Sandbox Code Playgroud)

Tho*_*que 9

您提到的框架方法不是线程安全的,因为它们是静态的,但因为它们是专门设计为线程安全的.线程安全通常很难实现,但它通常是静态方法所必需的,因为它们变异的任何状态都是在线程之间共享的.

您发布的示例方法不是线程安全的,因为它会改变线程之间共享的状态,而不使用任何同步机制.