1.类和对象

internal class Program
{
    static void Main(string[] args)
    {
        //类:对象的模板或者对象蓝图,具有相同属性和方法的集合
        //对象:类的实例化

        //类的作用:定义属性、字段、方法 通过类构建对象的作用
        //对象作用:给具体对象的属性和字段赋值 以及调用方法

        //类:人类    人类都包含:年龄、性别  吃喝拉撒行为
        //对象:张三 李四

        //创建对象:类名 对象名 = new 类名()
        Student zhangsan = new Student();
        //对象属性赋值 对象.属性=值
        zhangsan.Name = "张三";
        zhangsan.Age = 1;
        zhangsan.Sex = "男";
        //访问对象属性 对象.属性=值
        Console.WriteLine(zhangsan.Age);
        
        //创建对象 对象赋值的第二种方式
        Student list = new Student() { Name = "李四",Age = 20,Sex = "女"};
        Console.WriteLine(list.Name);

        //创建多个对象
        string s = "";
        for (int i = 0; i < 10; i++)
        {
            //创建对象
            Student s1 = new Student();
            s1.Name = "学生" + i +"号";
            s1.Age = i*20;
            s1.Sex = i % 2 == 0 ? "男" : "女";
            s += s1.Name + ":" + s1.Age + ":" + s1.Sex + "\n";
        }
        Console.WriteLine(s);

    }
}
//定义类:public class Student
//一般修饰符选择 public/internal
//class类的关键字
//Student 类名大驼峰命名法则

//public修饰符:公共的公开的类
//private 私有的类
//internal 内部的修饰
//protected 受保护的
public class Student
{
    private int _age; //字段:在类内部使用时候一般定义成字段并且为私有的,并且名字一般添加_单词首字母小写
    

    //属性:定义公共的 并且首字母要大写,并且加上set和get访问器,属性一般对外调用。
    //属性内部本质是访问内部私有的字段
    public int Age {  get; set; } //带get set属于属性
    public string Name {  get; set; }
    public string Sex { get; set; }
}

2.值类型和引用类型

internal class Program
{
    static void Main(string[] args)
    {
        //值类型:变量存储值本身,存在栈空间中,在赋值过程中,把值本身复制拷贝一份,把拷贝一份给新变量了,在去修改
        //其中一个时候 ,另外一个不会受影响
        //值类型:int float double bool char long  uint sbyte ushort ulong  枚举 结构体类型  
        int a = 10;
        int b = a;//出现赋值过程, 把值拷贝了一份赋值b,b当成副本
        a = 30;
        Console.WriteLine(b);



        //引用类型:变量存储的对象的引用,或者说变量保存是内存地址,存储在堆空间, 在赋值过程中把内存地址复制一份,新变量和之前变量内存地址一样
        //这俩个变量是指向同一个内存地址,再去修改其中一个另一个会被修改。
        //引用类型:string(特殊的引用类型)、class 、数组、集合 Random等

        //创建对象
        Book b1 = new Book();
        b1.Name = "明朝那些事";

        Book b2 = b1;//赋值过程
        b2.Name = "清朝";
        Console.WriteLine(b1.Name);// 清朝
    }
}
public class Book
{
    public string Name { get; set; }


}

3.方法的定义和调用

internal class Program
{
    //都是在Program里面去定义和调用
    static void Main(string[] args)
    {
        Console.WriteLine("hello world");//"hello world"实参:在调用方法传递的实际的值
        //实参:在调用方法传递的实际值
        //形参:在定义方法时候小括号里面(int a)a就是形参,形式上参数。

        //返回值:是方法的具体结果
        //Console.WriteLine(); 有结果的方法
        //string name = Console.ReadLine();

        //方法:把相关功能的代码添加到一个方法体里面,以后有需要相关功能的时候,只需要调用方法即可,
        //减少代码重复率  可以定义方法时候带参数,在调用的时候把实参传递方法里面形参,可以通过形参实现不同功能
        //方法也可以通过返回值把方法结果拿到其他地方去使用

        //方法包含:1.方法的定义  2.方法的调用

        //2.方法调用
        //如果方法是static 使用类名打点去调用
        //如果方法是没有static 使用对象.调用,前提先new一个对象
        Program.Test();//调用方法的时候会把方法里面全部执行一遍
        Test();//可以把类名省掉


    }

    //1.定义方法
    //public 方法修饰符,一般定义公共的
    //static 静态的方法,不写static 非静态方法
    //void 方法的返回值,无返回值 不能赋值给一个变量
    //Test 方法名字 符合大驼峰命名法则
    //{int a,int b} 参数列表
    //{}方法体
    public static void Test()
    {
        Console.WriteLine("清清");
    }
}

4.方法的参数

internal class Program
{
    static void Main(string[] args)
    {
        //调用方法 把实参值传递给形参
        Test("清清");//清清属于实参
        //Test(749);//参数是什么类型 决定传入实参类型
        string name = "紫幻";
        Test(name);//传递一个变量

        //调用两个参数Test1方法
        Test1(10, "清清1");

        //调用Test2方法
        Dog d1 = new Dog() { Name = "豆豆",Age = 1};
        Test2(d1);

        //调用Test3方法
        Test3(5, "清清");//不传默认参数的情况 默认参数值是定以时候写的值
        Test3(5, "暖阳", "北京WB");

    }
    //定义一个静态的 无返回值的 带一个参数的方法
    //name 形参

    public static void Test(string name)
    {
        for (int i = 0; i < 10; i++)
        {
            Console.WriteLine(name);
        }
    }
    //要求次数不定 名字不定 需要传递多个参数
    public static void Test1(int count ,string name) 
    {
        for (int i = 0; i < count; i++)
        {
            Console.WriteLine(name);
        }
    }
    public static void Test2(Dog d1)
    {
        for (int i = 0; i < 10; i++)
        {
            Console.WriteLine(d1.Name+":"+d1.Age);
        }
    }
    //传递三个参数 个数 姓名 默认值是狼队
    //zd 这个形参有一个默认值 如果传递实参,就是实参的值,不传的实参,zd就是默认值
    //默认参数只能写在最后面
    public static void Test3(int count, string name, string zd = "狼队")
    {
        for (int i = 0; i < count; i++)
        {
            Console.WriteLine(name+"是"+zd+"的");
        }
    }
}

//定义类
public class Dog
{
    public string Name { get; set; }
    public int Age { get; set; }
}

更多推荐