繁体   English   中英

嵌套 static 个没有方法的类有什么好处?

[英]What is the benefit of nesting static classes without methods?

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

这是一个嵌套的 static 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访问你的 static 变量

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

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

var x = StaticConstants.File.UserFile;

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

public const string UserFile = "userdata.txt";

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

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

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

一般嵌套类和类型(无论 static 与否)会影响可见性 scope 和可访问性,但不会影响语义(即含义,它的作用)。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM