美文网首页
C# 入门篇1-13

C# 入门篇1-13

作者: 愤斗的小蚂蚁 | 来源:发表于2021-10-26 20:02 被阅读0次

    1. C#,Unity3D‘JS,UnityScript(BOO)

    UnityScript和Boo的渊源

    2. C#之于.NET

    .net和c#的关系其实简单,.net是c#的运行环境,而c#只是.net的其中一个组成部分中的一种情况。具体来讲,.net包括架构(Framework)、语言(VB,C++,C#,Jscript和J#等)和工具(Visual Studio)。

    3. 【装箱、拆箱】当一个值类型转换为对象类型时,则被称为 装箱;另一方面,当一个对象类型转换为值类型时,则被称为 拆箱。

    object obj;
    obj = 100; // 这是装箱

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

    dynamic <variable_name> = value;
    dynamic d = 20;

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

    string str = @"C:\Windows";
    等价于:
    string str = "C:\Windows";
    @ 字符串中可以任意换行,换行符及缩进空格都计算在字符串长度之内。

    4.3 指针类型变量存储另一种类型的内存地址。C# 中的指针与 C 或 C++ 中的指针有相同的功能。

    5. C# 中的 Lvalues 和 Rvalues

    C# 中的两种表达式:
    lvalue:lvalue 表达式可以出现在赋值语句的左边或右边。
    rvalue:rvalue 表达式可以出现在赋值语句的右边,不能出现在赋值语句的左边。
    变量是 lvalue 的,所以可以出现在赋值语句的左边。数值是 rvalue 的,因此不能被赋值,不能出现在赋值语句的左边。下面是一个有效的语句:
    int g = 20;
    下面是一个无效的语句,会产生编译时错误:
    10 = 20;

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

    const <data_type> <constant_name> = value;

    7. is 和 as

    is 判断对象是否为某一类型。 If( Ford is Car) // 检查 Ford 是否是 Car 类的一个对象。
    as 强制转换,即使转换失败也不会抛出异常。 Object obj = new StringReader("Hello");
    StringReader r = obj as StringReader;

    8. switch 语句必须遵循下面的规则:

    • switch 语句中的 expression 必须是一个整型或枚举类型,或者是一个 class 类型,其中 class 有一个单一的转换函数将其转换为整型或枚举类型。
    • 在一个 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。
    • 可以把一个 switch 作为一个外部 switch 的语句序列的一部分,即可以在一个 switch 语句内使用另一个 switch 语句。即使内部和外部 switch 的 case 常量包含共同的值,也没有矛盾。

    9. C# 也支持 foreach 循环,使用foreach可以迭代数组或者一个集合对象。

    10. C# 封装

    封装 被定义为"把一个或多个项目封闭在一个物理的或者逻辑的包中"。在面向对象程序设计方法论中,封装是为了防止对实现细节的访问。
    抽象和封装是面向对象程序设计的相关特性。抽象允许相关信息可视化,封装则使开发者实现所需级别的抽象。
    C# 封装根据具体的需要,设置使用者的访问权限,并通过 访问修饰符 来实现。
    一个 访问修饰符 定义了一个类成员的范围和可见性。C# 支持的访问修饰符如下所示:

    • public:所有对象都可以访问;
    • private:对象本身在对象内部可以访问;
    • protected:只有该类对象及其子类对象可以访问
    • internal:同一个程序集的对象可以访问;
    • protected internal:访问限于当前程序集或派生自包含类的类型。

    11.1 C# 中定义方法

    当定义一个方法时,从根本上说是在声明它的结构的元素。在 C# 中,定义方法的语法如下:
    <Access Specifier> <Return Type> <Method Name>(Parameter List)
    {
    Method Body
    }
    下面是方法的各个元素:

    • Access Specifier:访问修饰符,这个决定了变量或方法对于另一个类的可见性。
    • Return type:返回类型,一个方法可以返回一个值。返回类型是方法返回的值的数据类型。如果方法不返回任何值,则返回类型为 void。
    • Method name:方法名称,是一个唯一的标识符,且是大小写敏感的。它不能与类中声明的其他标识符相同。
    • Parameter list:参数列表,使用圆括号括起来,该参数是用来传递和接收方法的数据。参数列表是指方法的参数类型、顺序和数量。参数是可选的,也就是说,一个方法可能不包含参数。
    • Method body:方法主体,包含了完成任务所需的指令集。

    11.2 在 C# 中,有三种向方法传递参数的方式:

    • 值参数:这种方式复制参数的实际值给函数的形式参数,实参和形参使用的是两个不同内存中的值。在这种情况下,当形参的值发生改变时,不会影响实参的值,从而保证了实参数据的安全。
    • 引用参数:这种方式复制参数的内存位置的引用给形式参数。这意味着,当形参的值发生改变时,同时也改变实参的值。
    • 输出参数:这种方式可以返回多个值。return 语句可用于只从函数中返回一个值。但是,可以使用 输出参数 来从函数中返回两个值。输出参数会把方法输出的数据赋给自己,其他方面与引用参数相似。提供给输出参数的变量不需要赋值。当需要从一个参数没有指定初始值的方法中返回值时,输出参数特别有用。

    12. C# 可空类型(Nullable)->单问号 ? 与 Null 合并运算符( ?? )-> 双问号 ??

    • ?: 单问号用于对 int、double、bool 等无法直接赋值为 null 的数据类型进行 null 的赋值,意思是这个数据类型是 Nullable 类型的。
      int? i = 3;
      等同于:
      Nullable<int> i = new Nullable<int>(3);
      int i; //默认值0
      int? ii; //默认值null

    • ??:Null 合并运算符用于定义可空类型和引用类型的默认值。Null 合并运算符为类型转换定义了一个预设值,以防可空类型的值为 Null。Null 合并运算符把操作数类型隐式转换为另一个可空(或不可空)的值类型的操作数的类型。如果第一个操作数的值为 null,则运算符返回第二个操作数的值,否则返回第一个操作数的值
      double? num1 = null;
      double num2;
      num2 = num1 ?? 5.34;

    13. 数组

    • 声明一个数组不会在内存中初始化数组。创建一个数组时,C# 编译器会根据数组类型隐式初始化每个数组元素为一个默认值。例如,int 数组的所有元素都会被初始化为 0。
    • params 关键字:在使用数组作为形参时,C# 提供了 params 关键字,使调用数组为形参的方法时,既可以传递数组实参,也可以传递一组数组元素。params 的使用格式为:
      public 返回类型 方法名称( params 类型名称[] 数组名称 )
    • 交错数组:交错数组是数组的数组;交错数组是一维数组;即一维数组,数组元素可以是数组,可以不等长;如:
      int[][] scores = new int[2][]{new int[]{92,93,94},new int[]{85,66,87,88}};

    相关文章

      网友评论

          本文标题:C# 入门篇1-13

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