C#学习-static与 字段

代码如下

/**
什么是字段?
    1. 字段(field)是一种表示与对象或类型(类与结构体)关联的变量
    2. 【字段】是类型的成员,旧称“成员变量”
    3. 与对象关联的字段亦称“实例字段”
    4. 与类型关联的字段称为“静态字段”,由static修饰

字段的初始值?
    1. 无显式初始化时,字段获得其类型的默认值,所以字段“永远都不会未被初始化”
    2. 实例字段初始化的时机--对象创建时
    3. 静态字段初始化的时机--类型被加载(load)时
 */


namespace static字段
{
    internal class Program
    {
        static void Main(string[] args)
        {
            List<Student> stuList = new List<Student>();

            for (int i = 0; i < 100; i++)
            {
                Student stu = new Student(i);   //如果没有只读ID字段的话,就直接是 Student stu = new Student()
                stu.Age = 24;
                stu.Score = i;
                stuList.Add(stu);
            }

            int scoreSum = 0;
            int ageSum = 0;
            foreach (var stu in stuList)
            {
                scoreSum += stu.Score;
                ageSum += stu.Age;
            }
            Student.AverageAge = ageSum / Student.Amount;
            Student.AverageScore = scoreSum / Student.Amount;
            Student.ReportAmount();
            Student.ReportAverage();
            Student.ReportAverageScore();
            Console.WriteLine(stuList[99].ID);  //打印最后一个List的成员ID
            Console.WriteLine(Student.size2d.school);  //打印最后一个List的成员ID
        }
    }
    struct Size2D
    {
        public string school;
        public string area;
    }

    class Student
    {
        public int Age;
        public int Score;
        public static int Amount;
        public static int AverageAge;
        public static int AverageScore;

        public readonly int ID; //只读实例字段
        //第一种对静态结构体只读实例字段赋值方法
        //public static readonly Size2D size2d = new Size2D() {school = "Foreign Language School", area = "DongShan"};
        //第二种对静态结构体只读实例字段赋值方法
        public static readonly Size2D size2d;
        static Student()    //ctor快捷方式直接输出
        {
            Student.size2d = new Size2D() { school = "Foreign Lanuage School", area = "DongShan" };
        }


        public Student(int ID)    //实例字段和静态字段关联起来--不懂,后面理解
        {
            Student.Amount++;
            this.ID = ID;   //注意是this. 而不是Student.
        }




        

        public static void ReportAverage()
        {
            Console.WriteLine(AverageAge);
        }
        public static void ReportAverageScore() 
        {
            Console.WriteLine(AverageScore);        
        }
        public static void ReportAmount()
        {
            Console.WriteLine(Student.Amount);  //Console.WriteLine(Amount);写法是等效的,推荐采用Student.Amount写法,明确表达出字段所属的类
        }

    }


}

运行结果

在这里插入图片描述

什么是字段?
    1. 字段(field)是一种表示与对象或类型(类与结构体)关联的变量
    2. 【字段】是类型的成员,旧称“成员变量”
    3. 与对象关联的字段亦称“实例字段”
    4. 与类型关联的字段称为“静态字段”,由static修饰

字段的初始值?
    1. 无显式初始化时,字段获得其类型的默认值,所以字段“永远都不会未被初始化”
    2. 实例字段初始化的时机--对象创建时
    3. 静态字段初始化的时机--类型被加载(load)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值