
class Text { public static float Pi; } internal class Program { static void Main(string[] args) { Console.WriteLine(Text.Pi); } }

在程序刚运行的时候就会开辟一个单独的空间:静态区域.这个区域不属于堆和栈,程序运行结束就会自动释放.
对比一下,非静态成员或者方法需要分配内存空间,即Text text =new Text()

class Text { public static float Pi; public void Text1() { } public static void Text2() { } } internal class Program { static void Main(string[] args) { } public void TextFun() { Text.Text2(); } } 相当于在一个短生命周期的里面调用长生命周期的.
就像这样:

常用的数学方法就可以用静态方法.
当然不能,会占用很多的内存空间,比如32G的只剩一个G,我们new新的对象就会频繁触发GC,影响性能.更严重会程序崩溃.


{ public static Text t = new Text(); } internal class Program { static void Main(string[] args) { Text.t = null; } } 看似这样可以了,但我依旧可以在外面改他 Text.t = null;
我们应该想到可以用属性来做到,但不能用非静态的属性,因为非静态的属性外面依旧要new
class Text { public static Text t = new Text(); public Text T { get { return t; } set { t = value; } } }
我们不妨把属性也设置成静态的这样,在外面直接点出来
class Text { public static Text t = new Text(); public int textInt = 10; public static Text T { get { return t; } set { t = value; } } } internal class Program { static void Main(string[] args) { Console.WriteLine(Text.T.textInt); } }
本文作者:Leemoon
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!