1、静态成员需要类名去调用
2、非静态成员需要实例化去调用
3、静态方法中,只可以访问静态成员。静态类中也只能有静态成员。
4、实例中既可以访问静态成员也可以访问非静态成员;
5、不能在静态类中声明实例成员;
6、可以在实例成员中声明静态成员;
7、静态类中的构造函数:只初始化一次,但是静态类的构造函数前面也要加static
结构与类的区别:
结构中也可以有字段、属性
结构中可以有静态方法和非静态方法;
结构与类的构造函数:
1、结构中构造函数 必须只能跟字段赋值,但是不能给属性赋值;必须跟所有的字段赋值,不能选择性的给字段赋值。
2、用new声明结构是,只做了调用构造函数;
3、结构中的构造函数:定义一个结构函数不会把原来的覆盖掉。
4、类和结构都有一个默认的无参数的构造函数;
如果只是单纯的存储数据的话,使用结构节省空间,因为数据存储在栈中,而非堆中。
如果想使用面向对象的思想开发程序,推荐使用类。因为结构不具备面向对象的特征。
竞购
static 构造函数名 { ..... }
namespace SumOfList
{
class Program
{
static void Main(string[] args)
{
// StaClass.add(); //静态类中不能调用非静态类
// 静态类中的方法直接通过类名调用,这里都在一个项目中,省略
StaClass.addsta(); // 第一次调用静态方法,调用之间调用构造函数
StaClass.gsta(); // 再次调用静态方法,不在调用构造函数,只调用一次
Console.ReadKey();
}
}
public static class StaClass
{
//写一个构造函数(静态类中的方法只能是静态的)
static StaClass()
{
Console.WriteLine ("这时静态类中的静态构造函数,但是只能调用一次,调用之前初始化");
}
/*
public void add() // 这种声明是错误的,不能在静态来中声明实例成员
{
Console.WriteLine("这个是静态类中的非静态方法");
}*/
public static void addsta()
{
Console.WriteLine("这个是静态类中的静态方法");
}
public static void gsta()
{
Console.WriteLine("这是静态类中的另一个静态方法");
}
}
}