在没有方法的情况下嵌套 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的字段或者属性,那么无论类型是否嵌套,都会被嵌套
嵌套类型和嵌套实例不相关。
我遇到了这样的代码示例:
这是一个嵌套静态 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的字段或者属性,那么无论类型是否嵌套,都会被嵌套
嵌套类型和嵌套实例不相关。