zoukankan      html  css  js  c++  java
  • 总结:C#类与结构的区别

    类与结构区别

    a)       类中字段可以有初始值,结构中字段不可以有初始值。

    b)       类中可以包含默认构造函数,结构中不能有显示定义的默认构造函数,结构体中带参数构造函数,但是构造函数中的参数必须为所有字段赋值。

    c)       类属于引用类型,结构属于值类型。

    d)       类可以被继承,结构不能被继承。

    e)       类必须实例化,结构可以实例化也可以不实例化

    代码示例

     完整代码:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace ConsoleApplication1
    {
       public class 类与结构区别
        {
           /// <summary>
           /// 程序入口执行
           /// </summary>
           /// <param name="age"></param>
           public static void Main(string[] age)
           {
               People p = new People("人类", "", 100);
               Console.WriteLine("姓名:{0},性别:{1},年龄:{2}",p.name,p.sex,p.age);
    
               Student p1 = new Student();
               Console.WriteLine("学生姓名:{0},性别:{1},年龄:{2}", p1.name, p1.Sex, p1.age);
               Console.ReadLine();
           }
        }
    
        /// <summary>
        /// 定义一个结构
        /// 特点:1、关键字Struct;2、理解成一个不能初始化字段值对象;3、值类型占栈容易释放内存;4、结构不能被继承;5、结构使用赋值直接=就好。
        /// </summary>
       struct People
       {
           public string name;
           public string sex;
           public int age;
    
           /// <summary>
           /// 结构的构造函数是的带参构造函数(并且是必须完全字段赋值)
           /// </summary>
           public People(string name,string sex,int age)
           {
               this.name = name;
               this.sex = sex;
               this.age = age;
           }
       }
    
       /// <summary>
       /// 定义一个类
       /// 特点:1、类包含构造函数、字段可以实例化、引用类型、可以被继承
       /// </summary>
       public class Student
       {
           public string name;
           public string sex;
           public int age;
           public string Name{get;set;}
           public string Sex{get;set;}
           public int Age { get; set; }
    
           //类字段初始化值
           public Student()
           {
               this.name="小明";
               this.sex = "";
               this.age = 10;
           }
       }
    }
    View Code

    错误一、结构字段不能初始化,编译错误

    但是很奇怪,可以定义方法给字段初始化值,竟没报错还能赋值上了,这会不会违反什么不?不懂了!!

     错误二、结构的构造函数参数不完整及不完全赋值编译错误

     

     错误三、类字段定义未赋值,后面直接字段赋值错误

     可以在定义是直接赋值初始化时才是正确初始化写法。

     结构与类如何选择

    • 类和结构作用很相似,根据以下几点特点选择
    • 结构是存放在栈空间,存放小,还可以自动释放内存。如果你使用的数据较小使用结构
  • 相关阅读:
    Crontab问题总结
    确定两个 Geometry 实例之间的关系
    Silverlight 多点触控(MultiTouch)
    在.NET中嵌入IronPython 交互
    Siebel集成OBI报表
    Silverlight XPS (PPT) Online
    Siebel Data Validation Manage 数据验证
    Siebel 附件清理
    Siebel 消息广播管理
    怎样创建一个.NET RIA Services Application (二)
  • 原文地址:https://www.cnblogs.com/liuzz/p/14509133.html
Copyright © 2011-2022 走看看