Csharp 虚方法和隐藏方法-抽象类和密封类
虚方法和隐藏方法虚方法(Virtual Method)定义在 C# 中,虚方法是在基类中使用virtual关键字修饰的方法。它允许派生类重写(override)该方法的实现。虚方法提供了一种多态性的机制,使得在运行时可以根据对象的实际类型来调用相应的方法。 示例 考虑一个简单的动物类层次结构。首先有一个基类Animal: 12345678910111213141516class Animal{ public virtual void MakeSound() { Console.WriteLine("The animal makes a sound."); }}然后有一个派生类Dog,它重写了MakeSound方法:csharpclass Dog : Animal{ public override void MakeSound() { Console.WriteLine("The dog barks."); ...
Csharp 继承
继承 在 C# 中,继承是面向对象编程的一个核心概念,它允许一个类(子类或派生类)继承另一个类(父类或基类)的属性和方法,从而实现代码的复用和扩展。以下从多个方面详细介绍 C# 中的继承: 基本概念继承建立了类与类之间的一种 “is - a” 关系,即子类是父类的一种特殊类型。通过继承,子类可以拥有父类的成员(字段、属性、方法等),并且可以添加自己特有的成员或重写父类的成员以实现不同的行为。 语法示例 以下是一个简单的继承示例,展示了如何定义父类和子类: 1234567891011121314151617181920212223242526272829303132333435363738// 定义一个父类 Animalclass Animal{ public string Name { get; set; } public Animal(string name) { Name = name; } public void Eat() { ...
Csharp 堆栈和静态类型
堆栈和静态储区值类型和引用类型概念值类型: 值类型变量直接包含它们的数据。当你声明一个值类型变量时,这个变量本身存储了实际的值。例如,C# 中的基本数据类型(如int、double、bool等)都是值类型。如果有一个int变量num = 5;,变量num存储的就是数字5这个值。值类型在内存中的存储相对简单,通常存储在栈(Stack)上。 引用类型: 引用类型变量存储的是一个引用,这个引用指向存储数据的实际内存位置(通常是堆 - Heap)。例如,在 C# 中,类(Class)、接口(Interface)、委托(Delegate)等都是引用类型。当你创建一个类的对象时,例如MyClass myObj = new MyClass();,变量myObj存储的是指向MyClass对象在堆内存中实际存储位置的引用。 内存分配和管理值类型: 如前面提到的,值类型一般存储在栈上。当一个值类型变量进入作用域(例如在一个方法内部声明)时,它会在栈上分配内存,当变量离开作用域时,其占用的栈内存会被自动释放。例如: 1234567891011class...
Csharp 匿名类型
匿名类型定义在 C# 中,匿名类型是一种可以在不定义具体类型(如类)的情况下创建对象的方式。匿名类型提供了一种便捷的方法来封装一组只读属性,通常用于临时的数据存储和传递。 匿名类型的实例是由编译器自动生成的类型,其类型名对于开发者是不可见的。例如: 1var person = new { Name = "John", Age = 30 }; 这里创建了一个匿名类型的对象person,它有两个属性Name和Age。var关键字让编译器根据初始化表达式来推断变量的类型。 属性访问 可以通过对象实例来访问其属性。例如,对于上面的person对象,可以这样访问属性: 12Console.WriteLine(person.Name); Console.WriteLine(person.Age); 由于匿名类型的属性是只读的,不能对其进行重新赋值。例如,下面的代码是错误的: 1person.Name = "Jane"; // 编译错误,因为匿名类型的属性是只读的 用途LINQ 查询结果的临时存储:在...
Csharp 构造函数的使用,this关键字
构造函数什么是构造函数?定义在 C# 中,构造函数是一种特殊的方法,它与类同名,并且没有返回类型(甚至不能是 void)。构造函数主要用于在创建类的对象时初始化对象的状态。例如,当你创建一个Person类的对象时,可以使用构造函数来初始化Person对象的姓名、年龄等属性。 默认构造函数如果一个类中没有定义任何构造函数,C# 编译器会自动提供一个默认构造函数。这个默认构造函数没有参数,并且它的作用是初始化对象的成员变量为它们的默认值(例如,数值类型为 0,引用类型为null)。 例如: 123456789101112class MyClass{ int myVariable;}class Program{ static void Main() { MyClass obj = new MyClass(); // 此时obj.myVariable的值为0 ...
Csharp public与private说明 set-get方法
set-get方法的使用在 C# 中,get 和 set 主要用于定义属性(Property),属性是一种用于封装字段(Field)的成员,它提供了对字段的访问控制,使得可以更安全、更方便地读取和修改字段的值。以下是关于 get 和 set 的详细介绍: 1. 属性的基本概念 属性结合了字段和方法的优点,从外部看它就像一个字段,可以像访问字段一样访问属性;但在内部,它通过 get 和 set 访问器来控制对字段的读写操作。 2. 完整属性定义(包含 get 和 set) 123456789101112131415161718192021222324252627282930313233class Person{ // 私有字段,用于存储数据 private string _name; // 公共属性,用于封装 _name 字段 public string Name { get { // get 访问器用于获取属性的值 return _name; ...
Csharp类的定义和使用
类的定义在 C# 中,类是一种用户定义的数据类型,它是面向对象编程的基本构建块。类用于封装数据(通过字段)和行为(通过方法)。定义一个类的基本语法如下: 1234class ClassName{ // 类的成员(字段、方法、属性等)} 例如,定义一个简单的Person类: 12345678910class Person{ // 字段,用于存储人的姓名 public string Name; // 方法,用于打印问候语 public void SayHello() { Console.WriteLine($"Hello, my name is {Name}."); ...
Csharp面向对象概念引入
面向对象编程(Object - Oriented Programming)面向对象概念引入: 从实际生活场景类比引入 想象我们要开发一个汽车管理系统。在现实生活中,汽车是一个具有多种属性和行为的实体。汽车有颜色(如红色、蓝色)、品牌(如丰田、宝马)、速度(如 0 - 200km/h)等属性,还有启动、加速、刹车等行为。 在 C# 中,我们可以把汽车抽象成一个类(class),就像创建一个汽车的蓝图。这个类可以定义汽车的各种属性和行为。例如: 12345678910111213141516171819202122class Car{ // 汽车的属性 public string Color; public string Brand; public int Speed; // 汽车的行为(方法) public void Start() { Console.WriteLine("The car has started."); } public void...
Csharp try-catch-finally语句处理异常
Csharp 使用try-catch-finally语句处理异常 在 C# 编程中,try - catch - finally语句是一种强大的机制,用于处理程序运行时可能出现的异常情况。异常是在程序执行过程中出现的错误或意外情况,例如试图访问不存在的文件、数组越界、除数为零等操作。使用try - catch - finally可以让程序在遇到这些异常时采取适当的措施,而不是直接崩溃。 try 块功能:try块是包含可能会抛出异常的代码部分。这是异常处理的起点,当程序执行到try块中的代码时,会监控其中的操作是否会引发异常。 示例: 12345try{ int[] numbers = { 1, 2, 3 }; Console.WriteLine(numbers[3]);// 这里会抛出IndexOutOfRangeException异常,因为数组最大索引是2} 在这个示例中,代码试图访问数组numbers中不存在的索引(索引为 3,而数组长度为 3,有效索引范围是 0 -...
函数clac(),css 媒体查询
calc 在 CSS 中,calc() 是一个非常有用的函数,它允许你在 CSS 属性值中进行数学计算。这使得你可以根据不同的长度单位(如像素、百分比等)动态地计算属性值,为网页布局提供了更大的灵活性。以下是关于 calc() 的详细介绍: 基本语法 calc() 函数的基本语法如下: 1calc(expression) 其中 expression 是一个数学表达式,该表达式可以包含加(+)、减(-)、乘(*)、除(/)四种基本运算符,同时可以使用不同的长度单位,如 px、%、em、rem 等。需要注意的是,运算符前后必须有空格。示例代码及解释 使用 calc() 进行宽度计算1234567891011121314151617181920212223242526272829<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport"...


