Static成员和方法

数据成员:
数据成员可以分静态变量、实例变量两种.
静态成员:静态成员变量是和类相关联的,可以作为类中"共"有的变量(是一个共性的表现),他不依赖特定对象的存在,访问的时候通过类名加点操作符加变量名来访问.
实例成员:实例成员变量是和对象相关联的,访问实例成员变量依赖于实例的存在.
函数成员:
方法可以主要分为静态方法,实例方法
静态方法:静态方法是不属于特定对象的方法,静态方法可以访问静态成员变量,静态方法不可以直接访问实例变量,可以在实例函数调用的情况下,实例变量做为参数传给静态方法。静态方法也不能直接调用实例方法,可以间接调用,首先要创建一个类的实例,然后通过这一特定对象来调用静态方法。
实例方法:一个实例方法的执行与特定对象关联,他的执行需要一个对象存在。实例方法可以直接访问静态变量和实例变量,实例方法可以直接访问实例方法、和静态方法,静态方法的访问方式为类名加点操作符加变量名。当多个实例对象存在时,内存中并不是存在美个特定的实例方法的拷贝,而是,相同类的所有对象都共享每个实例方法的一个拷贝(实例方法只占用“一套”空间)。
实例:
//类中的静态成员和非静态成员(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程序编译一下,

static变量可以不必实例化直接使用.
比如在类中
class Parameters
{
    public static string user="aa";
}
在另一个类中
class User
{
   string username=Parameter.user;
   可以直接使用user
}


你可能感兴趣的:(.net,String,user,C#,Class,Parameters)