• C#学习笔记(2)——program building blocks


    1、成员

    class的成员要么是静态成员,要么是实例成员。静态成员属于类,而实例成员属于对象。

    2、字段

    字段是类或类实例相关联的变量

    下面的例子里,R,G,B在每个类都有一份,但对于静态变量五个颜色,无论创建多少个实例,只有一份副本。

    public class Color
    {
        public static readonly Color Black = new(0, 0, 0);
        public static readonly Color White = new(255, 255, 255);
        public static readonly Color Red = new(255, 0, 0);
        public static readonly Color Green = new(0, 255, 0);
        public static readonly Color Blue = new(0, 0, 255);
        
        public byte R;
        public byte G;
        public byte B;
    
        public Color(byte r, byte g, byte b)
        {
            R = r;
            G = g;
            B = b;
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    3、方法

    静态方法通过类进行访问,而实例方法是通过类的实例进行访问。
    注意: 方法的签名必须是唯一的!!

    一个紧凑型方法的例子:

    public override string toString() => "This is an object.";
    
    • 1

    4、四类参数

    (1)值参数

    修改形参并不会影响实参的值

    (2)引用参数

    修改引用参数会影响实参的值

    (3)输出参数

    与引用参数基本一样,但是在调用方法的时候不需要显性赋值,例如可以只写成 (out int res) 调用

    (4)参数数组

    参数数组允许向方法传递数量不定的自变量。 以Console.WriteLine方法为例,参数1为字符串,参数2为object型的数组

    int x = 1;
    int y = 2;
    int z = 3;
    string s = "x = {0}, y = {1}, z = {2}";
    object[] para = new object[3];
    para[0] = x;
    para[1] = y;
    para[2] = z;
    Console.WriteLine(s, para);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    5、静态和实例方法

    静态方法只能访问静态成员
    实例方法只对特定的实例起作用,能够访问静态和实例成员

    6、虚方法、重写方法和抽象方法

    看不懂┭┮﹏┭┮,留坑待补充

    7、属性

    属性是字段的自然拓展。属性最大特点是包含访问器。
    get访问器读取此值,set访问器写入该值。
    只有get访问器的是“只读属性”,只有set访问器的是“只写属性”。两个都有的叫“读写属性”

    8、索引器

    索引器的声明方式与属性类似,不同之处在于,索引器成员名称格式为 this 后跟在分隔符 [ 和 ] 内写入的参数列表。

    9、多维数组的遍历

    方式一:

    int[,] a = new int[10,10];
    for(int i=0;i<a.GetLength(0);i++)//至第一个维度的长度
    {
        for(int j=0;j<a.GetLength(1);j++)至第二个维度的长度
        {
            a[i, j] = i * j;
            Console.Write("a[i,j]={0}\t", a[i, j]);
        }
        Console.WriteLine();
    }
    Console.ReadLine();
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    方式二:

    int[][] a = new int[3][];//设定第一维长度为3
    a[0] = new int[10];
    a[1] = new int[5];
    a[2] = new int[7];
    for(int i=0;i<a.Length;i++)
    {
        for(int j=0;j<a[i].Length;j++)//类似与C++
        {
            a[i][j] = i * j;
            Console.Write("a[i][j] = {0}\t", a[i][j]);
        }
        Console.WriteLine();
    }
    Console.ReadLine();
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    10、foreach语句适用于任何集合

    例子:

    foreach(int item in a)
    {
    	Console.WriteLine(item);
    }
    
    • 1
    • 2
    • 3
    • 4
  • 相关阅读:
    Golang Type关键字
    webpack:css代码提取插件extract-text-webpack-plugin和mini-css-extract-plugin
    背包问题总结
    关于专利申请的受理与不受理你了解多少?
    宏任务与微任务
    MQTT,JSON,VSCODE(C语言编程环境)心得
    手撸promise【二、Promise源码】【代码详细注释/测试案例完整】
    13款用于Web的流行HTML5视频播放器
    2019我的Java面试跳槽经历
    OSPFv3基础理论讲解
  • 原文地址:https://blog.csdn.net/weixin_43721423/article/details/126466276