![](/img/trans.png)
[英]Differents in static methods and non static methods in classes without fields
[英]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.