1. 静态成员属于类所有,非静态成员属于类的实例所有,即使用静态成员不需要实例化
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace myStatic
{
class Program
{
static void Main(string[] args)
{
person.Age = 30;
//此处不需要new person,直接使用person.age
Console.WriteLine(person.Age);
Console.ReadKey();
}
}
public class person
{
private static int age;
public static int Age
{
get { return age; }
set { age = value; }
}
}
}
|
2.每创建一个实例,都会为每个非静态成员分配一个内存空间,非静态成员为类所有,为各个类的实例所公用;但是无论创建了多少个实例,类的静态成员在内存中占用同一块区域。
3.静态方法和静态成员一样,也是属于类所有,不用创建类的实例,就可以直接使用
4.非静态方法,可以访问类中的所有成员;但是静态方法,只能使用类中的静态成员----因为静态方法在类实例化之前就可以使用,但是非静态成员必须在类实例化之后,才分配内存空间,这样静态方法调用是,无法判断非静态变量使用的内存地址,多以无法使用,而静态成员的地址对类来说是固定的,所以可以使用。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace myStatic
{
class Program
{
static void Main(string[] args)
{
person.Age = 30;
//此处不需要new person,直接使用person.age
Console.WriteLine(person.Age);
person.SayHello1();
Console.ReadKey();
}
}
public class person
{
private static int age;
public static int Age
{
get { return age; }
set { age = value; }
}
private string name;
public string Name
{
get { return name; }
set { name = value; }
}
public static void SayHello1()
{
Console.WriteLine("你好,我今年{0}岁了", person.Age);
//静态方法可以调用静态变量
}
public static void SayHello2(string s)
{
//Console.WriteLine("你好,我的名字是{0}",this.Name);
//出错啦,提示:关键字“this”在静态属性、静态方法或静态字段初始值设定项中无效
}
}
}
|