C# vs C++ (类、构造函数、属性、封装)

特性/概念C# 示例C++ 示例对比说明
类定义class Person { ... }class Person { ... };两者语法类似,但 C++ 类后需加分号;C# 默认成员是私有的,和 C++ 一致。
构造函数public Person(string name) { ... }Person(std::string name) { ... }两者语法相近,C# 可以重载构造函数,C++ 同样支持构造函数重载和初始化列表。
析构函数~Person() (很少用)~Person()C# 有 GC,通常不手动释放资源;C++ 需写析构函数管理资源释放。
属性(Property)public int Age { get; set; }int getAge(); void setAge(int);C# 有原生属性语法,自动封装字段;C++ 需写显式的 getter/setter。
封装使用 private 字段 + public 属性控制访问使用 private 成员 + public 方法控制访问概念相同,C# 提供更友好的语法(属性),C++ 更底层。
自动属性public string Name { get; set; }❌(不支持)C# 可简洁定义,C++ 不支持,需要手写字段和访问函数。
访问修饰符public, private, protected, internalpublic, private, protectedinternal 是 C# 特有的,表示当前程序集内访问。

示例对比

类定义 + 构造函数(C#)
class Person
{
    public string Name { get; set; }
    public int Age { get; private set; }

    public Person(string name, int age)
    {
        Name = name;
        Age = age;
    }
}
类定义 + 构造函数(C++)
class Person {
private:
    std::string name;
    int age;

public:
    Person(std::string name, int age) {
        this->name = name;
        this->age = age;
    }

    std::string getName() const { return name; }
    int getAge() const { return age; }
};

什么是自动属性?

在 C# 中,自动属性允许你用简洁的语法定义属性,无需自己声明字段,编译器会自动创建一个私有的字段来存储值。

基本语法:
public int X { get; set; }

等价于下面的完整写法(手动封装字段):

private int _x;

public int X
{
    get { return _x; }
    set { _x = value; }
}
示例代码:使用自动属性的类
class Person
{
    public string Name { get; set; }
    public int Age { get; set; }
}

使用:

Person p = new Person();
p.Name = "Alice";
p.Age = 30;

Console.WriteLine($"Name: {p.Name}, Age: {p.Age}");

输出:

Name: Alice, Age: 30
自动属性的优点:
特性优点
简洁性不需要写冗长的字段和 get/set 函数
默认私有字段编译器自动生成,程序员无需关心
可加限制可以加 private set 只读属性等

例如,只允许外部读取、内部写入:

public int Score { get; private set; }
如果你需要逻辑控制怎么办?

当你需要在 get 或 set 中添加自定义逻辑时,就不能使用自动属性了,得改成完整写法:

private int _score;
public int Score
{
    get { return _score; }
    set
    {
        if (value >= 0 && value <= 100)
            _score = value;
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值