美文网首页
C# 基础篇14-23

C# 基础篇14-23

作者: 愤斗的小蚂蚁 | 来源:发表于2021-10-31 16:18 被阅读0次

14. 在 C# 中的结构与传统的 C 或 C++ 中的结构不同。C# 中的结构有以下特点:

  • 结构可带有方法、字段、索引、属性、运算符方法和事件。
  • 结构可定义构造函数,但不能定义析构函数。但是,您不能为结构定义无参构造函数。无参构造函数(默认)是自动定义的,且不能被改变。
  • 与类不同,结构不能继承其他的结构或类。
  • 结构不能作为其他结构或类的基础结构。
  • 结构可实现一个或多个接口。
  • 结构成员不能指定为 abstract、virtual 或 protected。
  • 当您使用 New 操作符创建一个结构对象时,会调用适当的构造函数来创建结构。与类不同,结构可以不使用 New 操作符即可被实例化。
  • 如果不使用 New 操作符,只有在所有的字段都被初始化之后,字段才被赋值,对象才被使用。

14.1 类 vs 结构

类和结构有以下几个基本的不同点:

  • 类是引用类型,结构是值类型。
  • 结构不支持继承。
  • 结构不能声明默认的构造函数。

15. 枚举

enum <enum_name>
{
enumeration list // 默认从0开始
};

16. 类(Class)

<access specifier> class class_name
{
// member variables
<access specifier> <data type> variable1;
// member methods
<access specifier> <return type> method1(parameter_list)
{
// method body
}
}

  • 访问标识符 <access specifier> 指定了对类及其成员的访问规则。如果没有指定,则使用默认的访问标识符。类的默认访问标识符是 internal,成员的默认访问标识符是 private。
  • 数据类型 <data type> 指定了变量的类型,返回类型 <return type> 指定了返回的方法返回的数据类型。
  • 如果要访问类的成员,你要使用点(.)运算符。
  • 点运算符链接了对象的名称和成员的名称。

【类的 构造函数】 是类的一个特殊的成员函数,当创建类的新对象时执行。构造函数的名称与类的名称完全相同,它没有任何返回类型。默认的构造函数没有任何参数。但是如果你需要一个带有参数的构造函数可以有参数,这种构造函数叫做参数化构造函数。
【类的 析构函数】 是类的一个特殊的成员函数,当类的对象超出范围时执行。析构函数的名称是在类的名称前加上一个波浪形(~)作为前缀,它不返回值,也不带任何参数。析构函数用于在结束程序(比如关闭文件、释放内存等)之前释放资源。析构函数不能继承或重载。
【类的静态成员】使用 static 关键字把类成员定义为静态的。当声明一个类成员为静态时,意味着无论有多少个类的对象被创建,只会有一个该静态成员的副本。关键字 static 意味着类中只有一个该成员的实例。静态变量用于定义常量,因为它们的值可以通过直接调用类而不需要创建类的实例来获取。静态变量可在成员函数或类的定义外部进行初始化。也可以在类的定义内部初始化静态变量。成员函数声明为 static。这样的函数只能访问静态变量。静态函数在对象被创建之前就已经存在。

17. 继承 属于IS-A关系,不支持多重继承

  • 可以使用接口来实现多重继承

public interface InterfaceB {
int test(int arg1);
}

18. 多态性

多态性可以是静态的或动态的。在静态多态性中,函数的响应是在编译时发生的。在动态多态性中,函数的响应是在运行时发生的。

  • 静态多态性(函数的重载-参数列表,个数,返回类型?;运算符的重载-operator-must be declared static and public)
    +, -, !, ~, ++, -- 这些一元运算符只有一个操作数,且可以被重载。
    +, -, *, /, % 这些二元运算符带有两个操作数,且可以被重载。
    ==, !=, <, >, <=, >= 这些比较运算符可以被重载。
    &&, || 这些条件逻辑运算符不能被直接重载。
    +=, -=, *=, /=, %= 这些赋值运算符不能被重载。
    =, ., ?:, ->, new, is, sizeof, typeof 这些运算符不能被重载。
    public static Box operator+ (Box b, Box c)
    Box boxa = boxB + boxC;

  • 动态多态性(抽象类-抽象方法 abstract 与sealed互斥,密封类;虚方法-virtual-override)
    abstract class Shape {
    abstract public int area();
    }

public virtual void Draw()
public override void Draw()

19. 命名空间

namespace,using,嵌套
namespace namespace_name{
namespace namespace_name_inner {
}
}

  1. using指令:引入命名空间
    这是最常见的用法,例如:
    using System;
    using Namespace1.SubNameSpace;
  2. using static 指令:指定无需指定类型名称即可访问其静态成员的类型
    using static System.Math;var = PI; // 直接使用System.Math.PI
  3. 起别名
    using Project = PC.MyCompany.Project;
  4. using语句:将实例与代码绑定
    using (Font font3 = new Font("Arial", 10.0f),
    font4 = new Font("Arial", 10.0f))
    {
    // Use font3 and font4.
    }
    代码段结束时,自动调用font3和font4的Dispose方法,释放实例。

20. 预处理器指令

21. 正则表达式

22. 异常处理

23. 文件的输入与输出

相关文章

  • C# 基础篇14-23

    14. 在 C# 中的结构与传统的 C 或 C++ 中的结构不同。C# 中的结构有以下特点: 结构可带有方法、字段...

  • Unity C#基础之 多线程的前世今生(下) 扩展篇

    在前面两篇Unity C#基础之 多线程的前世今生(上) 科普篇和Unity C#基础之 多线程的前世今生(中) ...

  • 从零开始学C#--一些其它的问题

    本篇属于:从零开始学C# | 基础篇 | 06 到本篇为止,C#的基础篇就完结了,即将进入到面向对象的学习。 关于...

  • .NET Core C# 初级篇 1-1 基础类型介绍

    .NET Core CSharp初级篇 1-1 本节内容是对于C#基础类型的存储方式以及C#基础类型的理论介绍 基...

  • c#集合

    C#基础知识简单梳理

  • 黑马训练营Asp.Net第2期完整版

    初级 .Net入门教程_.Net入门视频教程|黑马程序员 C#基础教程_C#基础视频教程_黑马程序员 .Net基础...

  • Winform

    C# WinForm实践开发教程 C# WinForm实践开发教程——第一章 Windows编程基础C# WinF...

  • C#/.Net学习资料

    C#开发轻松入门——基础入门(慕课网) 零基础学C#(一)——基础入门(网易云课堂明日科技) 45分钟C#快速入门...

  • C#/.net学习资料

    C#开发轻松入门——新手基础入门(慕课网) 零基础学C#(一)——新手基础入门(网易云课堂明日科技) 45分钟C#...

  • 链接合集

    微软framework开源c#基础+设计模式

网友评论

      本文标题:C# 基础篇14-23

      本文链接:https://www.haomeiwen.com/subject/zgeyaltx.html