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);//编译错误 } }

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

C# 结构体的更多相关文章

  1. Go结构体实现类似成员函数机制

    Go语言结构体成员能否是函数,从而实现类似类的成员函数的机制呢?答案是肯定的. package main import "fmt" type stru struct { testf ...

  2. C#基础回顾(二)—页面值传递、重载与重写、类与结构体、装箱与拆箱

    一.前言 -孤独的路上有梦想作伴,乘风破浪- 二.页面值传递 (1)C#各页面之间可以进行数据的交换和传递,页面之间可根据获取的数据,进行各自的操作(跳转.计算等操作).为了实现多种方式的数据传递,C ...

  3. go语言结构体

    定义: 是一种聚合的数据类型,是由零个或多个任意类型的值聚合成的实体. 成员: 每个值称为结构体的成员. 示例: 用结构体的经典案例处理公司的员工信息,每个员工信息包含一个唯一的员工编号.员工的名字. ...

  4. C语言中的结构体

    用户自己建立自己的结构体类型 1.  定义和使用结构体变量 (1).结构体的定义 C语言允许用户自己建立由不同类型数据组成的组合型的数据结构,它称为结构体. (2).声明一个结构体类型的一般形式为: ...

  5. C++_系列自学课程_第_12_课_结构体

    #include <iostream> #include <string> using namespace std; struct CDAccount { double bal ...

  6. java socket传送一个结构体给用C++编写的服务器解析的问题

    另一端是Java写客户端程序,两者之间需要通信.c++/c接收和发送的都是结构体,而Java是直接发送的字节流或者byte 数组.解决方法:c++/c socket 在发送结构体的时候其实发送的也是字 ...

  7. swift学习笔记3——类、结构体、枚举

    之前学习swift时的个人笔记,根据github:the-swift-programming-language-in-chinese学习.总结,将重要的内容提取,加以理解后整理为学习笔记,方便以后查询 ...

  8. HDOJ 1009. Fat Mouse' Trade 贪心 结构体排序

    FatMouse' Trade Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) ...

  9. C语言结构体对齐

    1.结构体变量中的元素如何访问? (1)数组中元素的访问方式:表面上有2种方式(数组下标方式和指针方式):实质上都是指针方式访问.(2)结构体变量中的元素访问方式:只有一种,用.或者->的方式来 ...

  10. C与指针(结构体指针,函数指针,数组指针,指针数组)定义与使用

    类型 普通指针 指针数组(非指针类型) 数组指针 结构体指针 函数指针 二重指针 定义方式 int *p; int *p[5]; int (*p)[5]; int a[3][5]; struct{.. ...

随机推荐

  1. iOS加载程序视图的方式

    The UIViewController class provides built-in support for loading a view controller's views whenever ...

  2. 关于NSDate和NSDateFormatter的几个常用方法

    /** *  NSDate常见类方法 */ // 获得当前时间 NSDate *date1 = [NSDate date];   // 类方法 // NSDate *date1 = [[NSDate ...

  3. JAVA基础学习day22--IO流四-对象序列化、管道流、RandomAccessFile、DataStream、ByteArrayStream、转换流的字符编码

    一.对象序列化 1.1.对象序列化 被操作的对象需要实现Serializable接口 1.2.对象序列化流ObjectOutputStream与ObjectInputStream ObjectInpu ...

  4. MacOs终端忽略大小写

    使用MacOs的终端时,唯一让人感觉不爽的就是Tab补全是区分大小的,所以查了资料就把这个问题搞定了.在用户目录下创建 .inputrc 文件,内容为以下三行代码,保存后重启终端再次输入文件名Tab补 ...

  5. c语言中的部分字符串和字符函数

    // // main.c // homeWork1230 // // #include <stdio.h> #include <string.h> #include <c ...

  6. android binder 进程间通信机制6-Binder进程间通信机制的JAVA接口

    Binder间进程通信的JAVA层接口,主要是通过JNI方法来调用Binder库的C/C++接口 在JAVA层,将Service组件称为JAVA服务,Service组件的代理称为JAVA服务代理. 一 ...

  7. Win7下:编译器错误信息: CS0016: 未能写入输出文件

    错误如下: "/"应用程序中的服务器错误. 编译错误 说明: 在编译向该请求提供服务所需资源的过程中出现错误.请检查下列特定错误详细信息并适当地修改源代码. 编译器错误消息: CS ...

  8. 安全初始化MySql服务器

    我们在安装完MySql服务器,设置好MySql的root用户密码后,就直接开始使用了,其实这样的MySql服务器还存在着一些不安全因素, 本篇演示一下用命令mysql_secure_installat ...

  9. informatica 常见问题及解决方案

    本文对于informatica使用过程中产生的问题及解决方案做总结,持续更新中... 1.partitioning option license required to run sessions wi ...

  10. Effective Java 77 For instance control, prefer enum types to readResolve

    The readResolve feature allows you to substitute another instance for the one created by readObject ...