静态和非静态的区别
1)、在非静态类中,既可以有实例成员,也可以有静态成员。
2)、在调用实例成员的时候,需要使用对象名.实例成员;
输出结果:
1)、在非静态类中,既可以有实例成员,也可以有静态成员。
2)、在调用实例成员的时候,需要使用对象名.实例成员;
在调用静态成员的时候,需要使用类名.静态成员名;
总结:
静态成员必须使用类名去调用,而实例成员使用对象名调用。
静态函数中,只能访问静态成员,不允许访问实例成员。
实例函数中,既可以使用静态成员,也可以使用实例成员。
静态类中只允许有静态成员,不允许出现实例成员。
举例:
添加一个非静态类 Person
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace _03静态和非静态的区别
{
public class Person //非静态类
{
private static string _name; //字段
public static string Name //属性
{
get { return Person._name; }
set { Person._name = value; }
}
private char _gender;
public char Gender
{
get { return _gender; }
set { _gender = value; }
}
public void M1() //非静态方法
{
Console.WriteLine("我是非静态的方法");
}
public static void M2() //静态方法
{
Console.WriteLine("我是一个静态方法");
}
}
}
添加一个静态类 Student
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace _03静态和非静态的区别
{
public static class Student
{
private static string _name;
public static string Name
{
get { return Student._name; }
set { Student._name = value; }
}
public static void S1()
{
Console.WriteLine("Hello World");
}
//以下实例成员即使写了,也不可能被调用
// 静态类中只允许有静态成员,不允许出现实例成员
//public void S2()
//{
// Console.WriteLine("我是实例的Hello World");
//}
}
}
Program类及Main函数
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace _03静态和非静态的区别
{
class Program
{
static void Main(string[] args)
{
//非静态类调用实例成员
Person p = new Person();
p.M1();//实例方法调用
Person.M2();//静态方法调用
//静态类
Student.S1();//静态类方法调用
Console.WriteLine();
Console.ReadKey();
}
}
}
输出结果:
我是非静态的方法
我是一个静态方法
Hello World