关闭

蛙蛙推荐:类中的静态成员和非静态成员(C#版)

标签: c#stringclasssystem.net
784人阅读 评论(0) 收藏 举报
分类:

//蛙蛙推荐:类中的静态成员和非静态成员(C#版)
//下面我写一个例子来演示静态成员和非静态成员的区别
//类的成员要么是静态的,要么是动态的,如果将类的某个成员声明为static,则该成员是静态成员。
//类的静态成员是属于类所有,不必产生类的实例就可以访问它,就是只用类名就可以访问
//静态成员为类的所有实例所共享,无论这个类创建了多少个实例,一个静态成员在内存中只占有一块区域.
//类的非静态成员属于类的实例所有,每创建一个类的实例,都在内存中为非静态成员开辟了一块区域
//静态方法只能访问类例的静态字段,而非静态方法可以访问类例的所有字段
using System;

class Employee {
    public static decimal Salary;  // 静态字段
    public string Name;  // 非静态字段
    public static void SetSalary(decimal B) //静态方法
    {
       Salary=B;  // 正确,等价于Employee.Salary=B,注意这里不能访问Name变量的,因为它是静态方法
    }
    public void SetName(string N) //非静态方法
    {
       Name=N;   // 正确,等价于this.Name=N.
    }
}

class Sample
{
    public static void Main()
    {
       Employee.Salary=500.0m;   // 正确,静态字段可以按类名访问
       Employee.SetSalary(500.0m);  // 正确,静态方法可以按类名访问
       Employee e=new Employee();  // 建立类Employee的一个实例
       e.Name="蛙蛙王子";  // 正确,非静态字段必须通过实例访问
       e.SetName("蛙蛙王子");  // 正确,非静态方法必须通过实例访问
       // 注意,e.Name不能写成Employee.Name,即非静态成员不能按类名访问
       // Employee.Salary也不能写成e.Salary,即静态成员不能通过类的实例访问
       Console.WriteLine("员工姓名:{0}/n薪水:{1}元",
                         e.Name,Employee.Salary);
    }
}
//----------------------------------------------------
//注意一下,上面的例子只演示了类成员里的字段和方法,其实类的成员还有属性等,这里没有演示.
//把本文件保存成static.cs文件,然后在.net命令控制台下敲入csc static.cs会在当前目录下生成一个static.exe文件
//运行static.exe就会看到结果了,你可以试着改动程序让静态方法访问一下非静态字段,再用csc.exe程序编译一下,
//看看会提示什么错误,呵呵.

 
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:3619753次
    • 积分:36031
    • 等级:
    • 排名:第128名
    • 原创:58篇
    • 转载:1368篇
    • 译文:0篇
    • 评论:392条
    最新评论