C#面向对象2 静态类、静态成员的理解
2013-06-24 09:01
281 查看
理解:静态成员属于类所有,为各个类的实例所公用,与实例无关,需要全局共享的属性或者方法定义成静态的C#静态成员: 1、静态成员属于类所有,故用类名调用,非静态成员属于类的实例所有,用实例名调用 2、非静态成员有一片固定的空间,而每创建一个类的实例,都会在内存中为非静态成员新分配一块存储; C#静态方法 1、C#静态方法属于类所有,故用类名调用 2、非静态方法可以访问类中的任何成员,静态方法只能访问类中的静态成员。 因为静态方法在类实例化前就可以使用,而类中的非静态变量必须在实例化之后才能分配内存, 静态方法、静态字段namespace _2_静态_非静态方法{ class Program { static void Main(string[] args) { Person.name = "key"; //用类名调用静态字段、方法 Person.show1("哈哈哈哈哈"); Console.WriteLine("================"); Person per1 = new Person(); per1.age = 19; //用实例名调用非静态字段、方法 per1.show2("呵呵呵呵呵呵呵呵"); Console.ReadKey(); } }
class Person { public static string name; //静态字段 public int age; //非静态字段 public static void show1(string str) //静态方法 { Console.WriteLine(str); Console.WriteLine(name); //可以调用静态字段,不能调用非静态字段 } public void show2(string str) //非静态方法 { Console.WriteLine(str); Console.WriteLine(name+"今年"+age.ToString()+"岁"); } }}==================================静态类namespace 静态类{ class Program //静态类的所有成员也都是静态的,作用就是建一个数学方法和值的数学库 { static void Main(string[] args) { int val = 3; Console.WriteLine("{0} is odd is {1}",val,MyMath.IsOdd(val)); Console.WriteLine("{0}*2={1}",val,MyMath.Times2(val)); } }
static public class MyMath { public static float PI = 3.14f; public static bool IsOdd(int x) { return x % 2 == 1; } public static int Times2(int x) { return 2*x; } }}
class Person { public static string name; //静态字段 public int age; //非静态字段 public static void show1(string str) //静态方法 { Console.WriteLine(str); Console.WriteLine(name); //可以调用静态字段,不能调用非静态字段 } public void show2(string str) //非静态方法 { Console.WriteLine(str); Console.WriteLine(name+"今年"+age.ToString()+"岁"); } }}==================================静态类namespace 静态类{ class Program //静态类的所有成员也都是静态的,作用就是建一个数学方法和值的数学库 { static void Main(string[] args) { int val = 3; Console.WriteLine("{0} is odd is {1}",val,MyMath.IsOdd(val)); Console.WriteLine("{0}*2={1}",val,MyMath.Times2(val)); } }
static public class MyMath { public static float PI = 3.14f; public static bool IsOdd(int x) { return x % 2 == 1; } public static int Times2(int x) { return 2*x; } }}
相关文章推荐
- 深入理解C# 静态类与非静态类、静态成员的区别
- 深入理解C# 静态类与非静态类、静态成员的区别 [转载]
- 深入理解C# 静态类与非静态类、静态成员的区别
- 深入理解C# 静态类与非静态类、静态成员的区别
- C#面向对象之静态成员和静态类
- 深入理解C# 静态类与非静态类、静态成员的区别
- C#——面向对象——静态成员和静态类——静态成员
- 深入理解C# 静态类与非静态类、静态成员的区别
- C#——面向对象——静态成员和静态类——静态类
- 理解C#编程中的静态类和静态成员以及密封类
- 深入理解C# 静态类与非静态类、静态成员的区别
- 【C#小知识】C#中一些易混淆概念总结(三)--------结构,GC回收,静态成员,静态类
- C#中静态变量 静态类 静态成员
- C# 静态类与非静态类、静态成员的区别
- 静态数据成员和静态成员函数理解
- 黑马程序员------面向对象(No.1)(面向对象的理解、成员变量、局部变量、匿名对象)
- C#中的静态成员、静态方法、静态类介绍
- 【转载】C#扫盲之:静态成员、静态方法、静态类、实例成员及区别
- JavaScript面向对象(二)——成员属性、静态属性、原型属性与JS原型链
- C#中一些易混淆概念总结(三)--------结构,GC回收,静态成员,静态类