C#中的结构和类之间的区别

C#类和结构

在C#和其他编程语言中,结构和类用于定义自定义数据类型,我们可以根据需要使用不同类型的变量,方法等进行组织。

两者不一样。在这里,我们正在写结构和类之间的差异,它们具有以下基本差异...

C#类和C#结构之间的差异

  1. 类是数据类型的引用类型,结构是数据类型的值类型。

  2. 类支持默认构造函数,即我们可以设置将在创建对象时分配的默认值。结构不支持默认构造函数的概念,我们无法在创建结构对象/变量时设置诸如类之类的可以用作默认值的值。

  3. 类支持继承;结构不支持继承。

示例

在本示例中,我们将创建方法Student_1和类Student_2以及方法。要了解C#中的类和结构之间的区别,请练习给出的示例。

using System;
using System.Text;

namespace Test
{
    //structure 
    public struct student_1{
        private string name;
        private short age;
        private float perc;

        //method
        public void setValue(string name, short age, float perc)
        {
           this.name= name;
           this.age= age;
           this.perc= perc;

        }
        public void dispValues()
        {
            Console.WriteLine("Name: {0}", name);
            Console.WriteLine("age: {0}", age);
            Console.WriteLine("perc: {0}", perc);
        }
    };

    //class
    public class student_2{
        private string name;
        private short age;
        private float perc;

        //默认构造函数
        public student_2()
        {
           this.name= "N/A";
            age = 0;
            perc = 0.0f;
        }
        //method
        public void setValue(string name, short age, float perc)
        {
           this.name= name;
           this.age= age;
           this.perc= perc;

        }
        public void dispValues()
        {
            Console.WriteLine("Name: {0}", name);
            Console.WriteLine("age: {0}", age);
            Console.WriteLine("perc: {0}", perc);
        }
    };

    class Program
    {
        static void Main(string[] args)
        {
            //创建结构变量
            student_1 std1 = new student_1();
            //打印默认值
            Console.WriteLine("std1 (default values)...");
            std1.dispValues();
            //设定值
            std1.setValue("Amit", 21, 98.23f);
            //设置值后打印
            Console.WriteLine("std1 (after setting values)...");
            std1.dispValues();
            
            Console.WriteLine();

            //创建类对象
            student_2 std2 = new student_2();
            //defaut构造函数将被调用
            //打印我们在默认构造函数中设置的值
            Console.WriteLine("std2 (default values)...");
            std2.dispValues();
            //设定值
            std2.setValue("Amit", 21, 98.23f);
            //设置值后打印
            Console.WriteLine("std2 (after setting values)...");
            std2.dispValues();

            //按ENTER退出
            Console.ReadLine();
        }
    }
}

输出结果

std1 (default values)...
Name:
age: 0
perc: 0
std1 (after setting values)...
Name: Amit
age: 21
perc: 98.23

std2 (default values)...
Name: N/A
age: 0
perc: 0
std2 (after setting values)...
Name: Amit
age: 21
perc: 98.23