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 = ; //c#中,任何未初始化的值或类型都不能被使用,其值是未知的
int yt;
string s0;
CTEST otest;//在栈上为otest变量本身分配4或8字节内存(相当于C++的指针),32位机是4字节,64位机是8字节
            //此时并未给otest在堆上分配内存,只有等到new CTEST()时才分配堆内存
Console.WriteLine(otx.x);//编译错误
otx.x = ; //可以,这是赋值操作
Console.WriteLine(yt);//编译错误
Console.WriteLine(s0);//编译错误
Console.WriteLine(otest);//编译错误 } }

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

最新文章

  1. 9.Struts2在Action中获取request-session-application对象
  2. maven工程模块化
  3. html特殊字符
  4. 【uTenux实验】内存池管理(固定内存池和可变内存池)
  5. HDU 3255 扫描线(立方体体积并变形)
  6. 生产环境的redis高可用集群搭建
  7. DataTable转换为Model实体对象
  8. C++11 半同步半异步线程池的实现
  9. 代码管理器 TFS2013
  10. mvc设计模式的优点
  11. 机器学习基石10-Logistic Regression
  12. 网络编程socket之一
  13. 不可不知 DDoS的攻击原理与防御方法
  14. GitHub 简单用法
  15. echarts中国地图坐标弹框
  16. IE浏览器如何调试Asp.net的 js代码
  17. 调整Intellij IDEA内存
  18. Python Challenge 第 4 关攻略:linkedlist
  19. NetCore+Dapper WebApi架构搭建(三):添加实体和仓储
  20. vector vector int 初始化

热门文章

  1. IOS单例
  2. App开发流程之通用宏定义及头文件
  3. spring和mybatis整合配置
  4. Linux线程学习(二)
  5. Effective Java 03 Enforce the singleton property with a private constructor or an enum type
  6. Docker CentOS 7.2镜像systemd问题解决办法
  7. UVA 11355 Cool Points(几何)
  8. hdu 2874 Connections between cities [LCA] (lca->rmq)
  9. uniq
  10. NOIP2008 普及组T1 ISBN号码 解题报告-S.B.S.