csharp:类:理解类

类的实例化

实例化:把类创建为对象的过程。

// 语法
类名称 对象名 = new 类名称();
// 语法
类名称 变量;
变量 = new 类名称();
Car myCar = new Car();
  • 创建了一个名为 myCar 的变量,并将其初始化为一个新的 Car 对象。
  • 这意味着 myCar 现在引用了一个实际存在的 Car 实例。
  • 结论myCarCar 类的实例/对象。
特别提醒
如果只写 Car myCar;,这仅仅声明了一个名为 myCar 的变量,但并没有给它分配任何值。在这种情况下,myCar 是一个未初始化的变量(或 null),你不能直接使用它,必须先实例化它

为什么要创建类及对类的理解

当多个对象具有相同属性时,可以把他们归于一类,即创建一个类。

  • 属性:类中包含他们相同的特征。
  • 行为:可以看做方法(函数)。
namespace 创建类及对类的理解
{
    class Program
    {
        static void Main(string[] args)
        {
            // 当多个对象具有相同属性、行为时,可以把他们归于一类
 
            // 利用同种类型创建英雄
            MAX_pipou LeiShen = new MAX_pipou(); // 创建一个英雄叫雷神
            MAX_pipou gaiya = new MAX_pipou();   // 创建一个英雄叫盖亚
            MAX_pipou wunu = new MAX_pipou();    // 创建一个英雄叫舞女
 
            // 英雄属性赋予
            LeiShen.name = "雷神"; LeiShen.agg = 22; LeiShen.shengao = 175;
            gaiya.name = "盖亚"; gaiya.agg = 25; gaiya.shengao = 182;
            wunu.name = "舞女"; wunu.agg = 18; wunu.shengao = 163;
 
            // 英雄展示
            LeiShen.show_MAX_pipou(); 
            gaiya.show_MAX_pipou(); 
            wunu.show_MAX_pipou();
        }
    }
 
    class MAX_pipou  // 创建英雄的类
    {
        // 字段变量 等待外部赋值
        // 变量不加 static 必须要实例化类才能使用
        public String name; // 名 
        public int agg;     // 年龄
        public int shengao; // 身高
 
        public void show_MAX_pipou() // 方法
        {
            Console.WriteLine(name);
            Console.WriteLine(agg);
            Console.WriteLine(shengao);
        }
    }
}

成员变量与成员函数

  • 成员变量:一个类里面的变量。
  • 成员函数:一个类里面的方法。

创建类添加 static

类里面的变量如果添加了 static 关键字,相当于直接创建了变量。 特点:无需实例化即可直接访问。

namespace 创建类及对类的理解加入static
{
    class Program
    {
        static void Main(string[] args)
        {
            // 直接通过 类名.属性 访问,不需要 new 对象
            MAX_pipou.name = "英雄";
            MAX_pipou.agg = 24;
        }
    }
 
    class MAX_pipou  // 创建英雄的类加 static
    {
        // 静态字段变量
        public static String name;   // 名 
        public static int agg;       // 年龄
        public static short xbie;    // 性别
        public static int shengao;   // 身高
        public static short jineng;  // 技能
        public static short wuqi;    // 武器
        public static int gongjili;  // 攻击力
 
        public void show_MAX_pipou()
        {
            Console.WriteLine(name);
            Console.WriteLine(agg);
            Console.WriteLine(shengao);
        }
    }
}

主类与次类之间变量需要传递数据

在主类中实例化次类的对象,可以通过以下方式传递数据:

  1. 1. 通过 对象点 (Object.Property) 的方式赋值。
  2. 2. 调用其中方法,传入参数
  3. 3. 把一个对象当做参数传入。
  4. 4. 建议使用委托(Delegate)。

类的绑定理解 (引用类型)

使用 fuka 对象就等于使用 zhuka 对象成员。

class casrd // 卡类
{
    public String Money; // 卡的金额
}
 
class syong
{
    public void syong_jilu()
    {   
        Console.WriteLine("信用卡消费记录");
 
        // 创建卡对象、赋予8千额度
        casrd zhuka = new casrd() { Money = "8000" };
        Console.WriteLine("信用卡总额度:" + zhuka.Money); // 输出主卡的总额度值
 
        // 关键点:引用赋值
        casrd fuka = zhuka; // 怎么理解这里?
 
        fuka.Money = "2000"; // 副卡消费2千块(实际上修改的是同一个内存地址)
 
        Console.WriteLine("消费记录:" + zhuka.Money); // 输出主卡的总额度值
    }
}

解析: 在这段代码中,casrd fuka = zhuka; 是将 zhuka 对象的引用(内存地址)赋值给 fuka。这意味着 zhukafuka 都指向同一个 Card 对象(创建在堆内存中)。

当你修改 fuka 的属性值时,实际上是修改了 zhuka 的属性值,因为它们本质上是同一个对象。

示意图

类型 行为特征
值类型 对一个变量的修改不会影响其他变量的值(复制副本)。
引用类型 对一个引用类型变量的值进行修改,会影响到与它相同引用的其他变量的值(操作同一地址)。

该主题尚不存在

您访问的页面并不存在。如果允许,您可以使用创建该页面按钮来创建它。

  • csharp/类/理解类.txt
  • 最后更改: 2025/11/26 16:36
  • 张叶安