面向对象编程(oop)是C#的核心概念,掌握它能写出更加清晰、更易维护的代码。
一、类和对象的关系
1)类是一群具有相同特性(属性)和行为(方法)的对象的一个统称,类不能直接使用。
2)类时一个模型,负责创建对象
二、类和对象
2.1 创建类和对象
public class Person
{
//字段 存储数据
public int Age;
public String Name;
public char Gender;
//方法
public void SayHi()
{
Console.WriteLine("hello");
}
}
static void Main(string[] args)
{
//创建对象 类名 对象名字 = new 类名()
Person p1 = new Person();
//如果想要拿到p1中的内容,可以通过p1.属性
p1.Age = 100;
p1.SayHi();
}
2.2 属性
属性是面向对象编程中的一种类成员,它提供了对字段类型的安全访问机制,既能像字段一样方便使用,又能像方法一样加入逻辑控制。
属性的核心作用:
- 保护字段
- 隐藏实现细节
- 语法简洁
2.2.1 属性的基本格式
private string _name; // 私有字段(外部不能直接访问)
public string Name // 公开属性
{
get { return _name; } // 读取时执行
set { _name = value; } // 写入时执行(value 是隐式参数)
}
var person = new Person();
person.Name = "Alice"; // 调用 set 访问器
Console.WriteLine(person.Name); // 调用 get 访问器
2.2.2 属性的练习
Student类:有学生的基本信息,及其语数英字段,有打招呼和计算自己平均成绩的两个方法;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace demo09_属性的联系
{
internal class Student
{
private string name;
private int age;
private char gender;
private double chinese;
private double math;
private double english;
public string Name
{
get { return name; }
set { name = value; }
}
public int Age
{
get { return age; }
set { age = value; }
}
public char Gender
{
get { return gender; }
set { gender = value; }
}
public double Chinese {
get { return chinese; }
set { chinese = value; }
}
public double Math
{
get { return math; }
set { math = value; }
}
public double English
{
get { return english; }
set { english = value; }
}
// 方法
public void SayHi()//介绍自己
{
Console.WriteLine($"我叫{Name},今年{Age}岁了,是{Gender}同学。");
}
public void Ava()//计算平均成绩
{
double sorce = (this.Math + this.Chinese + this.English) / 3;
Console.WriteLine($"我叫{this.Name},我的平均成绩是{sorce:F1}。");
}
}
}
program:创建了两个对象,并输入了字段数据,和调用了方法
namespace demo09_属性的联系
{
internal class Program
{
static void Main(string[] args)
{
Student s1 = new Student();
s1.Name = "小杜";
s1.Age = 23;
s1.Gender = '男';
s1.English = 100;
s1.Math = 50;
s1.Chinese = 80;
Student s2 = new Student();
s2.Name = "小王";
s2.Age = 23;
s2.Gender = '男';
s2.English = 90;
s2.Math = 50;
s2.Chinese = 100;
s1.SayHi();
s2.SayHi();
s1.Ava();
s2.Ava();
}
}
}
运行后的结果:

2.2.3 属性的快捷方式和自动属性
(1)快捷方式
Ctrl + R + E 可以快速生成

private int _id;
private string _name;
private string _description;
public string Name { get => _name; set => _name = value; }
public string Description { get => _description; set => _description = value; }
public int Id { get => _id; set => _id = value; }//快捷生成的内容
(2)自动属性
private string _type { get; set; }
这就是C#的自动属性,效果和前两种的属性效果是相同的。

752

被折叠的 条评论
为什么被折叠?



