C# .Net Core零基础从入门到精通实战教程全集【190课】

C# .Net Core零基础从入门到精通实战教程全集【190课】------夏の哉------97it.-------top/-------13939/

C# 语法快速上手:从变量到面向对象编程

C# 作为一种简洁、现代、类型安全的编程语言,在桌面应用、Web 开发、游戏开发等多个领域都有着广泛的应用。对于初学者来说,掌握 C# 的基本语法并逐步过渡到面向对象编程,是入门的关键。本文将从变量、数据类型等基础概念入手,逐步深入到面向对象编程的核心内容,帮助你快速上手 C#。

变量与数据类型

在 C# 中,变量是用于存储数据的容器,每个变量都有特定的数据类型,这决定了变量可以存储的数据种类和范围。

C# 的基本数据类型可分为值类型和引用类型。值类型直接存储数据本身,包括整数类型(如 int、long、short)、浮点类型(如 float、double)、字符类型(char)、布尔类型(bool)等。例如,int age = 25; 定义了一个 int 类型的变量 age,并赋值为 25;double height = 1.75; 定义了一个 double 类型的变量 height,赋值为 1.75。

引用类型则存储数据的引用(即数据在内存中的地址),包括字符串(string)、数组、类、接口等。字符串类型是比较常用的引用类型,例如 string name = "张三"; 定义了一个 string 类型的变量 name,存储了字符串 "张三"。需要注意的是,字符串一旦创建就不可修改,对字符串的修改实际上是创建了一个新的字符串对象。

变量的命名需要遵循一定的规则,只能由字母、数字和下划线组成,且不能以数字开头,同时不能使用 C# 的关键字(如 int、class 等)作为变量名。良好的变量命名习惯有助于提高代码的可读性,通常建议使用有意义的名称,如用 age 表示年龄,用 name 表示姓名。

控制流语句

控制流语句用于控制程序的执行顺序,包括条件语句和循环语句。

条件语句主要有 if-else 和 switch-case。if-else 语句根据条件的真假执行不同的代码块,例如:

arduino 复制代码
int score = 85;
if (score >= 90)
{
    Console.WriteLine("优秀");
}
else if (score >= 70)
{
    Console.WriteLine("良好");
}
else
{
    Console.WriteLine("及格");
}

这段代码根据 score 的值判断并输出对应的等级。

switch-case 语句适用于多条件判断的场景,根据表达式的值匹配对应的 case 标签执行相应的代码,例如:

arduino 复制代码
char grade = 'B';
switch (grade)
{
    case 'A':
        Console.WriteLine("优秀");
        break;
    case 'B':
        Console.WriteLine("良好");
        break;
    case 'C':
        Console.WriteLine("及格");
        break;
    default:
        Console.WriteLine("不及格");
        break;
}

循环语句用于重复执行一段代码,常用的有 for、while 和 do-while。for 循环适用于已知循环次数的情况,例如:

css 复制代码
for (int i = 0; i < 5; i++)
{
    Console.WriteLine(i);
}

这段代码会输出 0 到 4 这 5 个数字。

while 循环先判断条件,当条件为真时执行循环体,例如:

ini 复制代码
int count = 0;
while (count < 3)
{
    Console.WriteLine("循环次数:" + count);
    count++;
}

do-while 循环则先执行一次循环体,再判断条件,至少会执行一次循环体,例如:

dart 复制代码
int num = 5;
do
{
    Console.WriteLine(num);
    num--;
} while (num > 0);

函数

函数是一段完成特定功能的代码块,可以被多次调用,提高代码的复用性。在 C# 中,函数的定义包括函数名、返回值类型、参数列表和函数体。

函数的基本语法如下:

scss 复制代码
返回值类型 函数名(参数列表)
{
    // 函数体
}

例如,定义一个计算两个整数之和的函数:

arduino 复制代码
int Add(int a, int b)
{
    return a + b;
}

这个函数的返回值类型是 int,函数名是 Add,参数列表是两个 int 类型的参数 a 和 b,函数体实现了 a 加 b 的运算并返回结果。

调用函数时,只需使用函数名并传入相应的参数即可,例如:

ini 复制代码
int result = Add(3, 5);
Console.WriteLine(result); // 输出8

函数还可以有可选参数和参数数组。可选参数在定义时指定默认值,调用时可以省略该参数,例如:

arduino 复制代码
void ShowInfo(string name, int age = 18)
{
    Console.WriteLine("姓名:" + name + ",年龄:" + age);
}
// 调用时可以省略age参数
ShowInfo("张三"); // 输出"姓名:张三,年龄:18"
ShowInfo("李四", 20); // 输出"姓名:李四,年龄:20"

参数数组用于接受数量可变的参数,使用 params 关键字定义,例如:

csharp 复制代码
int Sum(params int[] numbers)
{
    int sum = 0;
    foreach (int num in numbers)
    {
        sum += num;
    }
    return sum;
}
// 调用时可以传入任意数量的int类型参数
int total = Sum(1, 2, 3, 4);
Console.WriteLine(total); // 输出10

面向对象编程基础

C# 是一种面向对象的编程语言,面向对象编程的核心概念包括类、对象、继承、封装和多态。

类与对象

类是对具有相同属性和行为的事物的抽象描述,对象是类的实例。例如,"人" 可以抽象为一个类(Person),类中包含姓名、年龄等属性,以及吃饭、睡觉等方法(行为)。

csharp 复制代码
class Person
{
    // 字段(属性)
    public string name;
    public int age;
    
    // 方法(行为)
    public void Eat()
    {
        Console.WriteLine(name + "在吃饭");
    }
    
    public void Sleep()
    {
        Console.WriteLine(name + "在睡觉");
    }
}

上述代码定义了一个 Person 类,有 name 和 age 两个公共字段,以及 Eat 和 Sleep 两个方法。通过类可以创建对象,例如:

ini 复制代码
Person person = new Person();
person.name = "张三";
person.age = 25;
person.Eat(); // 输出"张三在吃饭"
person.Sleep(); // 输出"张三在睡觉"

封装

封装是指将类的字段和方法隐藏起来,只提供公共的访问接口,以保护数据的安全性。通常将字段设置为私有(private),通过公共的属性(property)来访问和修改字段。

csharp 复制代码
class Student
{
    private string _studentId; // 私有字段
    
    // 公共属性
    public string StudentId
    {
        get { return _studentId; }
        set { _studentId = value; }
    }
    
    private int _score;
    
    public int Score
    {
        get { return _score; }
        set 
        {
            // 对分数进行验证,确保在0-100之间
            if (value >= 0 && value <= 100)
                _score = value;
            else
                Console.WriteLine("分数无效");
        }
    }
}

在这个 Student 类中,_studentId 和_score 是私有字段,通过 StudentId 和 Score 属性来访问和修改。在 Score 属性的 set 访问器中,对赋值进行了验证,确保分数的有效性,这体现了封装的思想。

继承

继承允许一个类(派生类)继承另一个类(基类)的属性和方法,派生类可以新增自己的属性和方法,也可以重写基类的方法。继承提高了代码的复用性和扩展性。

csharp 复制代码
// 基类
class Animal
{
    public string name;
    
    public void Eat()
    {
        Console.WriteLine(name + "在吃东西");
    }
    
    public virtual void MakeSound()
    {
        Console.WriteLine("动物发出声音");
    }
}
// 派生类Dog继承自Animal
class Dog : Animal
{
    // 重写基类的MakeSound方法
    public override void MakeSound()
    {
        Console.WriteLine(name + "汪汪叫");
    }
    
    // 新增方法
    public void Run()
    {
        Console.WriteLine(name + "在跑步");
    }
}

Dog 类继承自 Animal 类,重写了 MakeSound 方法,使其输出 "汪汪叫",并新增了 Run 方法。使用派生类创建对象时,可以调用基类的方法和派生类自己的方法:

ini 复制代码
Dog dog = new Dog();
dog.name = "小黑";
dog.Eat(); // 调用基类方法,输出"小黑在吃东西"
dog.MakeSound(); // 调用重写后的方法,输出"小黑汪汪叫"
dog.Run(); // 调用派生类新增方法,输出"小黑在跑步"

多态

多态是指同一操作作用于不同的对象,会产生不同的结果。在 C# 中,多态可以通过抽象类、接口和虚方法实现。

通过虚方法实现多态的例子在继承部分已有体现,基类的 MakeSound 方法被声明为 virtual,派生类重写该方法,当使用基类引用指向派生类对象时,调用该方法会执行派生类的实现:

ini 复制代码
Animal animal = new Dog();
animal.name = "小白";
animal.MakeSound(); // 输出"小白汪汪叫"

接口是一种完全抽象的类型,只包含方法的声明,不包含实现。类可以实现多个接口,从而实现多态。

csharp 复制代码
interface IFlyable
{
    void Fly();
}
class Bird : IFlyable
{
    public void Fly()
    {
        Console.WriteLine("鸟在飞");
    }
}
class Plane : IFlyable
{
    public void Fly()
    {
        Console.WriteLine("飞机在飞");
    }
}

Bird 和 Plane 都实现了 IFlyable 接口,分别实现了 Fly 方法。当使用 IFlyable 接口引用指向不同的对象时,调用 Fly 方法会产生不同的结果:

ini 复制代码
IFlyable flyable1 = new Bird();
flyable1.Fly(); // 输出"鸟在飞"
IFlyable flyable2 = new Plane();
flyable2.Fly(); // 输出"飞机在飞"

总结

本文从变量、数据类型、控制流语句、函数等基础语法入手,逐步介绍了 C# 面向对象编程的核心概念,包括类、对象、封装、继承和多态。掌握这些知识是进行 C# 开发的基础,在实际编程中,还需要不断练习和实践,熟悉 C# 的各种特性和类库,才能编写出高效、可维护的代码。随着学习的深入,你还会接触到更多高级特性,如泛型、委托、事件等,进一步提升自己的编程能力。

相关推荐
争不过朝夕,又念着往昔37 分钟前
Go语言反射机制详解
开发语言·后端·golang
绝无仅有2 小时前
企微审批对接错误与解决方案
后端·算法·架构
Super Rookie2 小时前
Spring Boot 企业项目技术选型
java·spring boot·后端
来自宇宙的曹先生2 小时前
用 Spring Boot + Redis 实现哔哩哔哩弹幕系统(上篇博客改进版)
spring boot·redis·后端
expect7g3 小时前
Flink-Checkpoint-1.源码流程
后端·flink
00后程序员3 小时前
Fiddler中文版如何提升API调试效率:本地化优势与开发者实战体验汇总
后端
bobz9653 小时前
FROM scratch: docker 构建方式分析
后端
lzzy_lx_20894 小时前
Spring Boot登录认证实现学习心得:从皮肤信息系统项目中学到的经验
java·spring boot·后端
前端付豪4 小时前
21、用 Python + Pillow 实现「朋友圈海报图生成器」📸(图文合成 + 多模板 + 自动换行)
后端·python