Fork me on GitHub

静态类

         通常将不进行实例化且仅包含静态成员的类声明为具有私有构造函数的密封类。.Net类库中System.Console和System.Environment就是这种类,静态类不能包含abstract和sealed修饰符,但是无法实例化静态类或从静态类派生,所以静态类的行为实际上是“抽象”和“密封”的。


静态类的特性:

1.所有的静态类都不显式的指定基类或所实现的接口列表,静态类都是隐式的从object类型继承的。

2.静态类只包含静态成员,其中常量和嵌套类型被看成是静态成员。

3.静态类不能派生所以不能含有protected 和protected internal访问修饰符。

4.静态类没有实例的构造函数,也不能提供任何默认的构造函数。

5.静态成员不会自动的成为静态,当一个类嵌套在一个静态的外层类中时,除非该类显式的包含static修饰符,否则该嵌套类不是静态类。


一下举一个静态类的例子:


 
using System;
namespace StaticClassTest
{
    using L = Area.Perimeter;
    static class Area 
    {
        public const double π = 3.1415926;//被看做静态成员
        public static double circleArea(double r)
        {
            return π * r * r;
            //return Math.PI * r * r;
        }
        public static double rectArea(double length, double height)
        {
            return length * height;
        }
        public static double squareArea(double side)
        {
            return side * side;
        }
        public class Perimeter//被看做静态成员,Area.Perimeter
        {
           public  double Cperim(double r)
           {
               return 2.0 * Math.PI * r;
           }
        }
    }
    class Test
    {
        public static void Main()
        {
            double[] area = new double[3];
            area[0] = Area.circleArea(2.35);
            area[1] = Area.rectArea(3.2, 2.36);
            area[2] = Area.squareArea(3);
         
            for ( int i = 0; i < area.Length;)
            { 
                Console.WriteLine(area[i]);
                i++;
            }
             L l = new L();
            //此处说明不该内部类不是静态类
            Console.WriteLine(l.Cperim(2.35));
            Console.ReadKey();
        }
    }
}

 


posted @   Halower  阅读(557)  评论(0编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
点击右上角即可分享
微信分享提示