A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© hou1989 黑马帝   /  2013-1-10 15:56  /  2168 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 hou1989 于 2013-1-10 17:07 编辑

在C#中结构和类有什么区别,什么时候使用结构。

评分

参与人数 1技术分 +1 收起 理由
潘梦军 + 1

查看全部评分

6 个回复

倒序浏览
1. 类(class)可以被实例化,属于引用类型,是分配在内存的堆上的;
2. 类是引用传递的;
3.结构(struct)属于值类型,是分配在内存的栈上的;
4.结构体是复制传递的。
5.Int32和Boolean等都属于结构体。

评分

参与人数 1技术分 +1 收起 理由
潘梦军 + 1

查看全部评分

回复 使用道具 举报
一 类和结构的示例比较
结构示例:
public struct Person
   {
       string Name;
       public int height;
       int weight;
       public bool overWeight()
       {
           //implement something
           return false;
       }
   }
类示例:
public class TestTime
{
    int hours;
    int minutes;
    int seconds;
   
    public void passtime()
    {
        //implementation of behavior
    }
}
调用过程
public class Test
{
    public static ovid Main
    {
        Person Myperson=new Person()      //声明结构
        TestTime Mytime=New TestTime()    //声明类
    }
}

从上面的例子中我们可以看到,类的声明和结构的声明非常类似,只是限定符后面是struct还是class的区别,而且使用时,定义新的结构和定义新的类的方法也非常类似。
二 类和结构的区别
1、值类型和引用类型
结构:结构是值类型;
值类型在堆栈上分配地址,所有的基类型都是结构类型,例如:int对应System.int32结构,string对应system.string结构 ,通过使用结构可以创建更多的值类型。
类:类是引用类型;
引用类型在堆上分配地址。
结构:不能从另外一个结构或者类继承,本身也不能被继承,虽然结构没有明确的用sealed声明,可是结构是隐式的sealed。
类:完全可扩展的,除非显示的声明sealed,否则类可以继承其他类和接口,自身也能被继承。
说明:
虽然结构不能被继承 可是结构能够继承接口,方法和类继承接口一样。

评分

参与人数 1技术分 +1 收起 理由
潘梦军 + 1

查看全部评分

回复 使用道具 举报
许庭洲 发表于 2013-1-10 16:03
1. 类(class)可以被实例化,属于引用类型,是分配在内存的堆上的;
2. 类是引用传递的;
3.结构(struct)属 ...

谢谢,问题,已经解决
回复 使用道具 举报
希望的曙光 发表于 2013-1-10 16:05
一 类和结构的示例比较
结构示例:
public struct Person

谢谢,问题,已经解决
回复 使用道具 举报
结构
结构不能有定义无参的构造函数,       
结构中不能给字段赋初始值
结构中不能有显示无参
结构赋值的时候是重新复制了一份
回复 使用道具 举报
结构是值类型,类是引用类型
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马