C#学习

周飞飞的C#学习笔记 #Day 1

Posted on 2021-02-27,6 min read

🤗🤗🤗今天是周飞飞学习C#的第一天!

今日重点:

1. C#的程序结构

  • 命名空间声明(Namespace declaration)
  • class 声明
  • Class 方法
  • Class 属性
  • 一个 Main 方法:Main方法是程序的入口
  • 语句(Statements)& 表达式(Expressions)
  • 注释

2. C#的基本语法

  • 关键字

3. C#的数据类型与类型转换

  • 对象(Object)类型:当一个值类型转换为对象类型时,则被称为 装箱;另一方面,当一个对象类型转换为值类型时,则被称为 拆箱。
  • 动态(Dynamic)类型:态类型与对象类型相似,但是对象类型变量的类型检查是在编译时发生的,而动态类型变量的类型检查是在运行时发生的。
  • 字符串类型:@字符串

4. C#的变量与常量

  • 常量的声明及引用

5. C#的运算符、判断、循环

  • 与C/C++相仿

6. C#的封装

  • 类的默认访问标识符是 internal,成员的默认访问标识符是 private。
  • internal与public的区别在于internal不可跨文件

7. C#的方法

  • 在 C# 中,使用 ref 关键字声明引用参数
  • 在 C# 中,使用 out 关键字声明输出参数:提供给输出参数的变量不需要赋值。当需要从一个参数没有指定初始值的方法中返回值时,输出参数特别有用。

8. C#可空类型

  • 可空类型可以表示其基础值类型正常范围内的值,再加上一个 null 值。
  • 可空类型声明语法:< data_type> ? <variable_name> = null;
  • C# 中??运算符的作用是判断??左边的对象是否为 null,如果不为 null 则使用 ?? 左边的对象,如果为 null 则使用 ?? 右边的对象。

9. C#数组

  • 数组声明语法:datatype[] arrayName;
  • 数组的初始化需要用到new关键字,如double[] balance = new double[10];
  • 使用foreach来遍历数组中的元素
foreach (int j in n ) // n 是一个带有 10 个整数的数组
{
    int i = j-100;
    Console.WriteLine("Element[{0}] = {1}", i, j);
}
  • 区别C#中的二维数组[,]交错数组[][]:C#中的二维数组更像矩阵,而C/C++中的二维数组更像是C#中的交错数组;交错数组与二维数组的区别,可以直观的理解为交错数组每一行的长度是可以不一样的。
  • 传递数组作为参数的方法
  • 参数数组params 关键字,参数数组通常用于传递未知数量的参数给函数。
  • 使用Array类来对数组进行处理

今日练习:

展开查看
using System;

namespace StudyFirstDay
{
    class ConvertType   //数据类型的转换
    {
        public void Change()
        {
            int i = 1;
            double j = 2.13;
            bool k = true;
            string l = "ABBBBBBB";
            Console.WriteLine(i.ToString());
            Console.WriteLine(j.ToString());
            Console.WriteLine(k.ToString());
            Console.WriteLine("{0}",l.ToLower());
        }
    }

    class Circle  //程序的基本语法学习
    {
        private double radis;
        public void AcceptDetails()
        {
            radis = Convert.ToDouble(Console.ReadLine());
        }

        public double GetArea()
        {
            return radis * radis * 3.14;
        }

        public void Display()
        {
            Console.WriteLine("radis:{0}", radis);
            Console.WriteLine("area:{0}", GetArea());
        }

        public void Getsize()  //用于获取各种数据类型的size
        {
            Console.WriteLine("Int:{0}", sizeof(int));
            Console.WriteLine("Double:{0}", sizeof(double));
            Console.WriteLine("Float:{0}", sizeof(float));
        }

        public void Swap(ref int x,ref int y)  //使用引用时,改变形参的同时也会改变实参
        {
            int temp = x;
            x = y;
            y = temp;
        }

        public void Getvalue(out int x,out int y)    //使用输出来达到在同一方法中输出多个参数的目的
        {
            x = 233;
            y = 666;
        }
    }

    class SampleClass
    {
        public const int c1 = 5;  
        public const int c2 = c1 + 5;   //必须公有才能被类外引用
        public SampleClass()     //注意此处在声明构造函数时,没有声明返回值的类型
        {
            //空函数
        }
    }

    class ExcuteCircle
    {
        static void Main(string[] args)
        {
            int a1 = 5, a2 = 10;
            SampleClass s = new SampleClass();
            ConvertType p = new ConvertType();
            Circle r = new Circle();
            //r.AcceptDetails();
            //r.GetArea();
            //r.Display();
            //r.Getsize();
            //p.Change();
            // Console.WriteLine("c1={0},c2={1}", SampleClass.c1, SampleClass.c2);//注意,此处引用不能用s.c1,s.c2,因为c1,c2是常量
            //r.Swap(ref a1,ref a2); Console.WriteLine("{0},{1}",a1,a2);//别忘了此处也需要传递关键字ref
            r.Getvalue(out a1,out a2); Console.WriteLine("{0},{1}", a1, a2); //别忘了此处也需要传递关键字out
            Console.ReadKey();

        }
    }
}

今日总结:

总的来说今天大致完成了C#菜鸟教程前一半的内容,但是考虑到难度递增,因此可能后一半的内容会花好几天的时间去学习与消化。

今天的收获主要在于对C#的基础有了基本的掌握,用粗体标注出了我认为的重难点,之后复习时可以参考着进行。然后对于数组这一部分,只是浅尝辄止,没有进行相应的练习,也没有深入地挖掘其发散的知识点,打算在以后用到数组时再返回来仔细地学习一番。

以上
明天也要好好加油呀!🚀🚀🚀


下一篇: 你好!朋友→

loading...