基本元素和类型


一.基本元素

  • 标记Token:对编译器有意义的符号
    • 关键字Keyword
    • 操作符Operator
    • 标识符Identifier
      • 允许“@”字符作为前缀以使关键字能够用作标识符
    • 标点符号
    • 文本(字面值)
  • 注释与空白
    • CTRL+K CTRL+C👉注释
    • CTRL+K CTRL+U👉取消注释
    • CTRL+K CTRL+D👉设置文档格式(自动对齐)

二.数据类型

  • 值类型

    • 结构体Structures
    • 枚举Enumerations
      • 只能从一个集合中选取有效值
  • 引用类型

    • 类Classes

    • 接口Interfaces

    • 委托Delegates

三.变量

👇从表面看,变量是用来存储数据

int x;
x = 100;

实际上,变量表示了存储位置,并且每个变量都有一个类型,以决定什么样的值能够存入变量

👆了解为,x是一个标签,对应着内存中的一个地址,100这个值就存在该地址

变量 = 以变量名所对应的内存地址为起点以其数据类型所要求的存储空间为长度的一块内存区域

堆,栈,地址的理解

引用变量存的是实例的地址

装箱和拆箱

//装箱
int x = 100;
object obj;

当发现obj引用的实例在堆上而不在栈上时,把该实例对应的值的内存大小在栈上找一块空间,再把这个地址存储回obj的内存空间

//拆箱
int y = (int)obj;
Console.WriteLine(y);

//100

装箱和拆箱

四.方法

方法是类或结构体的成员

方法相当于自定义函数

👆复用,如果要更改3.14159为3.14或者Math.PI可以直接在GetCircleArea处改

实例方法👇

Calculator c = new Calculator();
c.Add(2.0,3.0);
class Calculator
{
    public double Add(double a,double b);
}

静态方法

Calculator c = new Calculator();
//c.Add(2.0,3.0);此时这句话无用
class Calculator
{
    public static double Add(double a,double b);
}

五.构造器

不带以0为默认参数的构造器

namespace ConstructExample
{
    class Program
    {
        static void Main(string[]args)
        {
            Student stu = new Student;
            Console.WriteLine(stu.ID);
            Console.WriteLine(stu.Name);
        }
    }
    class Student
    {
        //不带参数的构造体
    	public Student()
        {
            this.ID = 1;
            this.Name = "No name";
        }
        //
        public int ID;
        public string Name;
    }
}

//1
//No Name

强制程序员给构造器设置参数,在这种情况下如果不想设置参数但是要调用该方法,就需要自定义一个默认参数,如上图所示

namespace ConstructExample
{
    class Program
    {
        static void Main(string[]args)
        {
            Student stu = new Student(1,"No name");//不能再写成new Student();
            Console.WriteLine(stu.ID);
            Console.WriteLine(stu.Name);
        }
    }
    class Student
    {
        //不带参数的构造体
    	public Student(int initId,string initName)
        {
            this.ID = initId;
            this.Name = initName;
        }
        //
        public int ID;
        public string Name;
    }
}

构造器快捷键:ctor+tab*2ctor=Code snippet(小片段)

重载

class Calculator
{
    //①
    public double Add(int a, int b)
    {
        return a + b;
    }
    //②
    public int Add(int a, int b)
    {
        return a + b;
    }
    ③
    public double Add(int a, int b, int c)
    {
        return a + b + c;
    } 
}

👆①与②不能共存,重载与方法的类型无关

①和③、②和③可共存

调用方法实际上是压栈的过程


文章作者: WB
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 WB !
  目录