总结: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

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

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

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

 

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

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

 结构与类如何选择

  • 类和结构作用很相似,根据以下几点特点选择
  • 结构是存放在栈空间,存放小,还可以自动释放内存。如果你使用的数据较小使用结构
原文地址:https://www.cnblogs.com/liuzz/p/14509133.html