C# static用法
首先说static 用来修饰数据成员的, 一旦修饰了数据成员,非静态方法,也是可以访问,并修改之, 因为,实例化对象共享这一份数据!!
既然是共享,那么就可以修改之。
用法为:
class C
{
private static int id=10; //该类的所有实例共享
public static void changeId(int ID) //类可以调用方法,对象是不能调用,貌似C++中,对象是可以调用静态函数
{
id = ID;
}
public void changeId2(int ID) //非静态函数, 可以访问静态成员数据
{
id = ID;
}
public void print() //非静态函数, 可以访问静态成员数据
{
Console.WriteLine(id);
}
}
class MainClass
{
static void Main()
{
C c = new C();
c.print();
c.changeId2(11);
c.print();
} //end Main
如果想不被修改,那么可以用static readonly 来修饰!!!!
不要用const ,const是不能和static 一块用 的
如果用static 来修饰类,会怎么样?
修饰了类,那么就不能实例化对象,而且所有成员都必须声明为静态成员!!
什么情况下用静态类呢?
比如: 写了一个排序算法类,包括:冒泡排序,希尔排序,等诸多排序方法, 我们用的时候,没有必要实例化一个对象啊?
直接用静态类就行了!!!
C++ ,C# 中的static 区别: 一,前者,对象是可以调用静态方法的,并且修改静态数据。!!!后者,则不可以!
试验证明,如果把静态数据设置:public权限,前者是可以通过对象去引用的,后者,则不可以。(当然,这个有些无聊了,
不要用pulic)
二,在一个函数中,是不能定义static 成员的(对与C#)
三,那么静态函数,可以访问非静态成员吗?
都不允许,如果类中有非静态成员,你去用静态函数访问,是错误的!!
综上: 所有方法都可以访问静态数据,但是静态函数,却不用访问非静态成员!!!
静态函数,用类去调用,不要用对象,否则是错误的。!!!
静态类,所有成员,必须是静态的。
如果想你的静态数据没有被修改,那么可以用static readonly
首先说static 用来修饰数据成员的, 一旦修饰了数据成员,非静态方法,也是可以访问,并修改之, 因为,实例化对象共享这一份数据!!
既然是共享,那么就可以修改之。
用法为:
class C
{
private static int id=10; //该类的所有实例共享
public static void changeId(int ID) //类可以调用方法,对象是不能调用,貌似C++中,对象是可以调用静态函数
{
id = ID;
}
public void changeId2(int ID) //非静态函数, 可以访问静态成员数据
{
id = ID;
}
public void print() //非静态函数, 可以访问静态成员数据
{
Console.WriteLine(id);
}
}
class MainClass
{
static void Main()
{
C c = new C();
c.print();
c.changeId2(11);
c.print();
} //end Main
如果想不被修改,那么可以用static readonly 来修饰!!!!
不要用const ,const是不能和static 一块用 的
如果用static 来修饰类,会怎么样?
修饰了类,那么就不能实例化对象,而且所有成员都必须声明为静态成员!!
什么情况下用静态类呢?
比如: 写了一个排序算法类,包括:冒泡排序,希尔排序,等诸多排序方法, 我们用的时候,没有必要实例化一个对象啊?
直接用静态类就行了!!!
C++ ,C# 中的static 区别: 一,前者,对象是可以调用静态方法的,并且修改静态数据。!!!后者,则不可以!
试验证明,如果把静态数据设置:public权限,前者是可以通过对象去引用的,后者,则不可以。(当然,这个有些无聊了,
不要用pulic)
二,在一个函数中,是不能定义static 成员的(对与C#)
三,那么静态函数,可以访问非静态成员吗?
都不允许,如果类中有非静态成员,你去用静态函数访问,是错误的!!
综上: 所有方法都可以访问静态数据,但是静态函数,却不用访问非静态成员!!!
静态函数,用类去调用,不要用对象,否则是错误的。!!!
静态类,所有成员,必须是静态的。
如果想你的静态数据没有被修改,那么可以用static readonly