• C#基础知识点


     

    1.动态(Dynamic)类型

    您可以存储任何类型的值在动态数据类型变量中。这些变量的类型检查是在运行时发生的。

    声明动态类型的语法:

    动态类型与对象类型相似,但是对象类型变量的类型检查是在编译时发生的,而动态类型变量的类型检查是在运行时发生的。

        dynamic <variable_name> = value;

    动态类型与对象类型相似,但是对象类型变量的类型检查是在编译时发生的,而动态类型变量的类型检查是在运行时发生的。


    2.字符串(String)类型--@形式

    C# string 字符串的前面可以加 @(称作"逐字字符串")将转义字符()当作普通字符对待,比如:

        string str = @"C:Windows";

    等价于:

        string str = "C:\Windows";

    @ 字符串中可以任意换行,换行符及缩进空格都计算在字符串长度之内。

    string str = @"<script type=""text/javascript"">
            <!--
            -->
            </script>";

    简单说,@字符串将原样输出.


    3.定义常量

    常量是使用 const 关键字来定义的 。定义一个常量的语法如下:

        const <data_type> <constant_name> = value;

    例如:

         1 const double pi = 3.14159; 


    4.switch 语句

    C# 中 switch 语句的语法:

     1 switch(expression){
     2     case constant-expression  :
     3        statement(s);
     4        break;
     5     case constant-expression  :
     6        statement(s);
     7        break;
     8  
     9     /* 您可以有任意数量的 case 语句 */
    10     default : /* 可选的 */
    11        statement(s);
    12        break;
    13 }

    switch 语句中的 expression 必须是一个整型或枚举类型,或者是一个 class 类型,其中 class 有一个单一的转换函数将其转换为整型或枚举类型。switch 语句必须遵循下面的规则:

    • 在一个 switch 中可以有任意数量的 case 语句。每个 case 后跟一个要比较的值和一个冒号。

    case 的 constant-expression 必须与 switch 中的变量具有相同的数据类型,且必须是一个常量。

    • 当被测试的变量等于 case 中的常量时,case 后跟的语句将被执行,直到遇到 break 语句为止。

    • 当遇到 break 语句时,switch 终止,控制流将跳转到 switch 语句后的下一行。

    • 不是每一个 case 都需要包含 break。如果 case 语句为空,则可以不包含 break,控制流将会 继续 后续的 case,直到遇到 break 为止。

    • C# 不允许从一个开关部分继续执行到下一个开关部分。如果 case 语句中有处理语句,则必须包含 break 或其他跳转语句。

    • 一个 switch 语句可以有一个可选的 default case,出现在 switch 的结尾。default case 可用于在上面所有 case 都不为真时执行一个任务。default case 中的 break 语句不是必需的。

    • C# 不支持从一个 case 标签显式贯穿到另一个 case 标签。如果要使 C# 支持从一个 case 标签显式贯穿到另一个 case 标签,可以使用 goto 一个 switch-case 或 goto default。


    5.两个特殊的访问修饰符

    Internal 访问修饰符:

        可访问域限定于类所在的程序集内,一般就是同一个exe或dll文件.

    Protected Internal 访问修饰符:

        protected或者internal,即可访问域限定于类所在的程序或那些由它所属的类派生的类内.


    6.C#中的参数传递

    a.按值传递参数:

        

    b.按引用传递参数:

        在 C# 中,使用 ref 关键字声明引用参数。当然,是定义方法时用。

    c.按输出传递参数:

        return 语句可用于只从函数中返回一个值。但是,可以使用 输出参数 来从函数中返回两个值。

        在 C# 中,使用 out 关键字声明输出参数。当然,也是定义方法时用。

        提供给输出参数的变量不需要赋值。


    7.C# 可空类型(Nullable)

    可空类型可以表示其基础值类型正常范围内的值,再加上一个 null 值。

    在处理数据库和其他包含可能未赋值的元素的数据类型时,将 null 赋值给数值类型或布尔型的功能特别有用。

    声明一个 nullable 类型(可空类型)的语法如下:

        < data_type> ? <variable_name> = value;

    例如:

    1 int? num1 = null;
    2 double? num4 = 3.14157;
    3 bool? boolval = new bool?();

    Null 合并运算符( ?? ):如果第一个操作数的值为 null,则运算符返回第二个操作数的值,否则返回第一个操作数的值。

    例如:

    1 double? num1 = null;
    2 double? num2 = 3.14157;
    3 double num3;
    4 num3 = num1 ?? 5.34; //num3=5.34
    5 num3 = num2 ?? 5.34; //num3=3.14157

    8.类 vs 结构


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

    • 类是引用类型,结构是值类型。

    • 结构不支持继承。

    • 结构不能声明默认的构造函数。


    9.C# 中的析构函数

    类的 析构函数 是类的一个特殊的成员函数,当类的对象超出范围时执行。

    析构函数的名称是在类的名称前加上一个波浪形(~)作为前缀,它不返回值,也不带任何参数。

    析构函数用于在结束程序(比如关闭文件、释放内存等)之前释放资源。析构函数不能继承或重载。

    例如Line类的析构函数:

    1 ~Line() //析构函数
    2 {
    3     Console.WriteLine("对象已删除");
    4 }

    10.继承


    继承(实现)的基本语法:

        class 子类:父类{

            ...    

        }

    子类继承父类的构造方法用:base()


    11.C#多态性

    多态性意味着有多重形式。在面向对象编程范式中,多态性往往表现为"一个接口,多个功能"。

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

    静态多态性:

    在编译时,函数和对象的连接机制被称为早期绑定,也被称为静态绑定。C# 提供了两种技术来实现静态多态性。分别为:

    • 函数重载

    • 运算符重载

    动态多态性:

    动态多态性是通过 抽象类 和 虚方法 实现的。

    通过在类定义前面放置关键字 sealed,可以将类声明为密封类。当一个类被声明为 sealed 时,它不能被继承。抽象类不能被声明为 sealed。

    虚方法就是抽象方法,虚方法必须被重写。

    虚方法是使用关键字 virtual 声明的,而重写时则必须用关键字 override 注明。


    12.运算符重载

    您可以重定义或重载 C# 中内置的运算符。因此,程序员也可以使用用户自定义类型的运算符。

    重载运算符是具有特殊名称的函数,是通过关键字 operator 后跟运算符的符号来定义的。与其他函数一样,重载运算符有返回类型和参数列表。

    例如,请看下面的函数:

    1 public static Box operator+ (Box b, Box c)
    2 {
    3    Box box = new Box();
    4    box.length = b.length + c.length;
    5    box.breadth = b.breadth + c.breadth;
    6    box.height = b.height + c.height;
    7    return box;
    8 }

    上面的函数为用户自定义的类 Box 实现了加法运算符(+)。它把两个 Box 对象的属性相加,并返回相加后的 Box 对象

    13. using (StreamReader sr = File.OpenText(path)) {...}语句

    意思是在执行完using()的花括号中的语句时,将调用括号里实例化的对象的Dispose方法,将对象从托管堆中释放。

    不是所有的对象声明都可以这样写,对于对象中没有包含Dispose方法的,不能用这个语句写。

  • 相关阅读:
    Iscroll滑动无效
    原生js 无缝滚动组件
    原生 js dialog弹窗组件
    html5 历史管理
    html5拖拽属性
    highcharts 数据图设置X轴间隔显示效果
    highcharts柱状图含有正负柱设置不同颜色的方法
    移动端滑动插件 swiper
    千分位添加和去掉方法
    dubbo常用类和路径
  • 原文地址:https://www.cnblogs.com/xmjz/p/5310750.html
Copyright © 2020-2023  润新知