当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


C# Class和Structure的区别用法及代码示例


在 C# 中,类和结构都用于定义自定义数据类型,但它们之间存在一些差异。

继承:类可以继承其他类,但结构不能。换句话说,一个类可以从另一个类派生,但结构不能。

引用类型与值类型:类是引用类型,这意味着当您创建类的对象时,会创建对该对象的引用,并且在使用该引用的任何地方都会反映对该对象的更改。另一方面,结构是一种值类型,这意味着当您创建结构类型的变量时,该变量的实际值存储在内存中,并且对该变量的更改不会反映在其他地方。

  1. 默认构造函数:类总是有一个默认构造函数,在创建该类的对象时调用该构造函数。另一方面,结构默认没有默认构造函数。但是,如果需要,您可以在结构中定义默认构造函数。
  2. 初始化:当您创建类的对象时,其成员将被初始化为其默认值(即引用类型为 null,值类型为 0)。当您创建结构类型的变量时,其成员也会初始化为其默认值。但是,您也可以在创建结构类型的变量时为该结构的成员提供初始值。
  3. 大小和性能:结构的大小通常比类小,因为它们不包含任何引用变量或开销。这意味着结构作为参数传递或复制比类更快。

A 是用户定义的蓝图或原型,用于创建对象。本质上,一个类将字段和方法(定义操作的成员函数)组合成一个单元。

例子:

C#


// C# program to illustrate the
// concept of class
using System;
// Class Declaration
public class Author {
    // Data members of class
    public string name;
    public string language;
    public int article_no;
    public int improv_no;
    // Method of class
    public void Details(string name, string language,
                        int article_no, int improv_no)
    {
        this.name = name;
        this.language = language;
        this.article_no = article_no;
        this.improv_no = improv_no;
        Console.WriteLine("The name of the author is : " + name
                        + "\nThe name of language is : " + language
                        + "\nTotal number of article published "
                        + article_no + "\nTotal number of Improvements:"
                        +" done by author is : " + improv_no);
    }
    // Main Method
    public static void Main(String[] args)
    {
        // Creating object
        Author obj = new Author();
        // Calling method of class
        // using class object
        obj.Details("Ankita", "C#", 80, 50);
    }
}
输出
The name of the author is :  Ankita
The name of language is : C#
Total number of article published  80
Total number of Improvements: done by author is : 50

A 结构体是单个单元下不同数据类型的变量的集合。它几乎类似于类,因为两者都是用户定义的数据类型,并且都保存一堆不同的数据类型。

例子:

C#


// C# program to illustrate the
// concept of structure
using System;
// Defining structure
public struct Car
{
    // Declaring different data types
    public string Brand;
    public string Model;
    public string Color;
}
class GFG {
    // Main Method
    static void Main(string[] args)
    {
        // Declare c1 of type Car
        // no need to create an
        // instance using 'new' keyword
        Car c1;
        // c1's data
        c1.Brand = "Bugatti";
        c1.Model = "Bugatti Veyron EB 16.4";
        c1.Color = "Gray";
        // Displaying the values
        Console.WriteLine("Name of brand: " + c1.Brand
                          + "\nModel name: " + c1.Model
                          + "\nColor of car: " + c1.Color);
    }
}
输出
Name of brand: Bugatti
Model name: Bugatti Veyron EB 16.4
Color of car: Gray

类和结构之间的区别

结构

类是引用类型。

结构体是值类型。

所有引用类型都分配在堆内存上。

所有值类型都分配在堆栈内存上。

大引用类型的分配比大值类型的分配更便宜。

与引用类型相比,分配和 de-allocation 在值类型中更便宜。

类具有无限的函数。

结构体的函数有限。

类一般用在大型程序中。

结构体用于小程序中。

类可以包含构造函数或析构函数。

结构不包含无参数构造函数或析构函数,但可以包含参数化构造函数或静态构造函数。

类使用 new 关键字来创建实例。

struct 可以创建一个实例,有或没有 new 关键字。

一个类可以继承另一个类。

不允许结构体继承另一个结构体或类。

类的数据成员可以受到保护。

struct 的数据成员无法受到保护。

类的函数成员可以是虚拟的或抽象的。

结构体的函数成员不能是虚拟的或抽象的。

类的两个变量可以包含同一个对象的引用,并且对一个变量的任何操作都可以影响另一个变量。

struct 中的每个变量都包含自己的数据副本(除了 ref 和 out 参数变量),对一个变量的任何操作都不会影响另一个变量。

总之,C# 中的类和结构之间的主要区别是继承、引用类型与值类型、默认构造函数、初始化和大小/性能。类通常用于更大、更复杂的对象,而结构则用于更小、更简单、经常使用且需要快速传递的对象。然而,类和结构都有各自的优点和缺点,它们之间的选择最终取决于项目的具体要求。



相关用法


注:本文由纯净天空筛选整理自ankita_saini大神的英文原创作品 Difference between Class and Structure in C#。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。