本文共 821 字,大约阅读时间需要 2 分钟。
在C#中数据类型分为值类型和引用类型 值类型:结构体、枚举 引用类型:类、接口、数组、委托
在结构使用时,结构可以实现接口。这时就有一个问题“结构体实现接口后是值类型还是引用类型?”。带着这个问题,我们看下面这段代码。
-
- struct StructClass : IClass {
- public int Count;
- public void AddStudent() {
- Count++;
- }
-
- public void ShowCount() {
- Console.WriteLine(Count);
- }
-
- }
-
- interface IClass {
- void AddStudent();
- void ShowCount();
- }
- class Program {
- static void Main(string[] args) {
- StructClass s1 = new StructClass();
- StructClass s2 = s1;
- s1.AddStudent();
- s1.ShowCount();
- s2.ShowCount();
-
-
-
- IClass ic1 = new StructClass();
- IClass ic2 = ic1;
- ic1.AddStudent();
- ic1.ShowCount();
- ic2.ShowCount();
-
-
- }
- }
最后得出结论:
当我们声明对象(s1、s2)是结构体类型时,对象是值类型,对象在栈中创建 当我们声明对象(ic1、ic2)是接口类型时,对象是引用类型,对象在堆中创建
原文链接:
转载地址:http://bnkpi.baihongyu.com/