是什么使在C#中定义方法时使用static关键字的做法不好?
我知道使用static
可以直接访问类中的函数,而无需创建类的实例。但是什么时候不应该使用静态?
答案 0 :(得分:0)
对于Microsoft使用'static'属性here,有完整的解释。
例如,在Web框架的经验(为此是.NET Core)中,我们对不需要任何更改的原始值使用静态声明。
答案 1 :(得分:0)
不访问任何实例数据的方法实际上应标记为static
:https://docs.microsoft.com/en-us/visualstudio/code-quality/ca1822-mark-members-as-static?view=vs-2017根据用途,它仍可能被声明为private
方法。
如果该方法确实访问任何实例数据,则不能是静态的。编译器强制执行此操作。
静态方法的常见示例为String.Format
和Int32.Parse
。在调用这些方法之前分配string
或int
毫无意义。
答案 2 :(得分:0)
在不需要访问类上任何非静态元素的方法时,可以创建一个静态方法。例如,考虑到DateTime.Parse
方法。您可以照常创建DateTime
的实例,但是如果您需要解析特定的日期,则可以调用DateTime.Parse
返回有效的DateTime,而无需自己创建DateTime
实例。由于该方法不访问DateTime类的任何特定元素,因此将其声明为static
更多信息:
https://www.codeproject.com/Questions/1208992/When-to-use-static-methods-Csharp
https://hackernoon.com/c-static-vs-instance-classes-and-methods-50fe8987b231