欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程语言 > C# >内容正文

C#

C# 结构体

发布时间:2025/3/18 C# 53 豆豆
生活随笔 收集整理的这篇文章主要介绍了 C# 结构体 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

C# 结构体

1,结构体不能出现在继承关系中,除了继承接口。

  结构体不能继承类或结构,也不能被类或结构继承,只可以继承接口

2,struct不能定义默认构造函数(无参构造函数),也不能定义析构函数。class对这两点都无限制。

3,如果struct提供了带参构造函数,则它的所有字段(变量)都必须在构造函数中初始化,否则编译报错。class对此无限制。

4,成员默认修饰符都是private,在C++中则默认为public

5,结构体成员变量不能在声明时初始化,即不能带有初始值。class对此无限制

using System; delegate string DTE(int x, string s);class MYTestX {struct ST{//public int x = 3; //错误,不能在结构体中这样初始化变量 public int x;public int y;//结构体有默认构造函数,我们不能定义它//ST()//错误,结构体不能有无参构造函数//{//}//若定义了有参构造函数,则必须在此初始化全部成员变量 ST(int x, int y){this.x = x;this.y = y;}}class CTEST{}static void Main(string[] args){ST ot = new ST(); //调用默认构造函数,将所有成员置为默认值 int x = ot.x;Console.WriteLine(x);ST otx;//在栈上为结构体otx分配空间,大小为两个int(若有其它类型注意字节对齐问题) otx.x = 20;//c#中,任何未初始化的值或类型都不能被使用,其值是未知的 int yt;string s0;CTEST otest;//在栈上为otest变量本身分配4或8字节内存(相当于C++的指针),32位机是4字节,64位机是8字节
            //此时并未给otest在堆上分配内存,只有等到new CTEST()时才分配堆内存 Console.WriteLine(otx.x);
//编译错误otx.x = 2; //可以,这是赋值操作Console.WriteLine(yt);//编译错误Console.WriteLine(s0);//编译错误Console.WriteLine(otest);//编译错误 }}

 

 

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

posted on 2016-10-02 11:47 时空观察者9号 阅读(...) 评论(...) 编辑 收藏

总结

以上是生活随笔为你收集整理的C# 结构体的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。