在没有方法的情况下嵌套 static 类 有什么好处?

What is the benefit of nesting static classes without methods?

我遇到了这样的代码示例:

这是一个嵌套静态 class,没有任何方法,只有变量。

public static class StaticConstants
{
    public static class File
    {
        public static string UserFile = "userdata.txt";
        public static string UserSettings = "usersettings.txt";
    }
    public static class API
    {
        public static string ApiUrl = "dummysite.com";
        public static string ApiEndPoint = "api/anEndpoint";
    }
}

我知道您现在通过 StaticConstants.Api.ApiUrl

访问您的静态变量

这样做(性能方面)有什么意义吗?还是 100% 个人喜好?这样做是一个好的编码习惯还是用静态变量创建 2 个静态文件更好?

它允许您使用点符号以分层方式访问静态数据:

var x = StaticConstants.File.UserFile;

如果这个数据真的是常量,他们应该使用 C# 常量。这些也是静态的。

public const string UserFile = "userdata.txt";

如果因为初始化需要运行一些代码,比如创建对象,所以不能使用const,那么应该使用readonly关键字。

public static readonly Font DefaultFont = new Font("Arial", 12f);

源代码在一个文件还是多个文件中对编译后的代码没有影响。这只是组织源代码的问题。它在性能方面也没有区别。

通常嵌套 classes 和类型(无论是否静态)对可见范围和可访问性有影响,但不影响语义(即含义,它的作用)。

即,non-static 嵌套 class 不会自动生成嵌套对象,并且它无法直接访问周围 class 的 non-static(实例)成员。它必须通过对周围对象的引用来实现(对于任何其他对象)。如果一个对象被赋值给周围class的字段或者属性,那么无论类型是否嵌套,都会被嵌套

嵌套类型和嵌套实例不相关。