网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
3)实例方法可以调用实例数据和静态数据。
**附:**我们在C#中经常使用的WriteLine等方法都是静态成员,是直接调用类名Console来使用的。
让我们来用代码来说明方法对数据的调用情况:
class Demo
{
int a; // 实例数据
static int b; // 静态数据
void A() // 实例方法
{
a = 1; // 正确:实例方法可以调用实例数据
b = 1; // 正确:实例方法可以调用静态数据
}
static void B() // 静态方法
{
a = 1; // 错误:静态方法不能调用实例数据
b = 1; // 正确:静态方法可以调用静态数据
}
static void Main() // 静态方法
{
Demo d = new Demo(); // 实例化对象
d.a = 1; // 正确:实例可以调用实例数据
d.b = 1; // 错误:实例不能调用静态数据
Demo.a = 1; // 错误:类名不能调用实例数据
Demo.b = 1; // 正确:类名可以调用静态数据
d.A(); // 正确:实例可以调用实例方法
d.B(); // 错误:实例不能调用静态方法
Demo.A(); // 错误:类名不能调用实例方法
Demo.B(); // 正确:类名可以调用静态方法
}
}
另外,让我们来用代码说明一下,静态数据只使用一块内存空间:
public class Demo
{
static int count=0; //定义静态数据count
int number=0; //定义实例数据number
public Demo()
{
number =number+ 1;
count = count + 1;
}
public void show()
{
Console.WriteLine("number={0} : count={1}", number, count);
}
}
class Test
{
public static void Main()
{
Demo a = new Demo();
a.show();
Console.WriteLine("***************");
Demo b = new Demo();
b.show();
Console.WriteLine("***************");
Demo c = new Demo();
c.show();
}
}
输出结果为:
number=1 : count=1
********************
number=1 : count=2
********************
number=1 : count=3
**可以看出:**静态数据的值是随着实例化出的对象数目而改变的,每增加一个实例化对象都会使静态数据值+1,所以所有的对象都是使用的同一个静态数据,即证明了静态数据公用一块内存空间,而每个对象的实例数据都相同,说明每实例化一次都会开辟一块新的内存空间。
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
pics/618668825)**
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!