zoukankan      html  css  js  c++  java
  • c#复习

    1.数组使用场景

    一个变量只能保存一个值,数组能保存同一种数据类型的很多值。那么对于数组而言,可以使用在多个类型值操作的情况下。我们都可以使用数组。

    例如:记录班上所有同学的名字,记录班所有同学考试成绩。

    注意点: 只要知道不管是变量还是数组,其目的都是为了保存数据。变量只能保存一个,而数组是一个集合同时一值对应一个下标而已。

    巩固知识点:

    1. 熟记知识点概念
    2. 多练习知识点小实例
    3. 从代码角度去深入理解
    4. 代码的运行过程

    数组周边知识

    • 对象->对象数组
    • for循环进行遍历数组
    • foreach循环数组
    • 数组多重循环使用

    注意:for各foreach的区别是一个根据下标来读取数据另一个是取出数据单个体

    2.类中this关键字


    this 是类中的常用关键字,其含义表示此类当前对象。使用this在类中不需要实例化。

    注意:在类当中使用this关键字一定明白的就是变量作用域。作用域分成员变量和局部变量。同名变量是以就近原则来一步一步往上找变量值。

    3.数据安全

    class User{
        public int age;
        public string name;
        public int gz;
        
        public void show(){
            Console.WriteLine(age+name+gz);
        }
    }
    
    public void static Main(String[] args){
        User u = new User();
        u.age = 12;  //可以赋值-20
        u.name = "张三";
        u.gz = 20000; //可以赋值2000000
        u.show();
    }
    

    上面代码可以随意对其设置,这样子数据是不是很不安全。如何才规避这一些危险操作呢?也就是关于这一些值可以做一个自定义的判断。

    为了数据的安全性给属性设置私有的。

    class User{
        //属性一但设置为私有的情况,外部还能访问吗?
        //外部不能访问私有属性age
        private int age;
        public string name;
        private int gz;
        
        /// <summary>
        /// 这是类对私有属性设置的类属性
        /// 可以操作以及设置私有属性值
        /// Age花括号当的value就是在外部给私有属性赋值的值。
        /// 不是类成员,所以不要加this
        /// <summary>
        public int Age{
            //对私有属性开通外部访问权限
            get {return this.age;}
            
            //私有属性可以被外部进行赋值,同时也可以对值进行设置,例如:只能输入1-100的数字等
            set {
                this.age = value;
            }
        }
        
        /// <summary>
        /// 如果不做值的限制,可以直接以简写方式
        /// </summary>
        public int Gz {get; set;}
        
        public void show(){
            Console.WriteLine(age+name+gz);
        }
    }
    
    public void static Main(String[] args){
        User u = new User();
        u.age = 12;  //可以赋值-20
        u.name = "张三";
        u.gz = 20000; //可以赋值2000000
        u.show();
    }
    

    注意:如果你想类当中的属性进行一个保护也就是对一些属性做特殊的值限制我们就可以私有化再通过类的私有属性公开化。

    4.对象初始化

    using System;
    class User {
        public string name;
        public int age;
    }
     
    public class Test
    {
    	public static void Main()
    	{
            User u = new User();
            
            Console.WriteLine(u.age +"__"+u.name);
    	}
    }
    
    ///为什么0——
    

    类的成员属性和局部变量有什么不同, 成员属性是有默认值,局部是没有默认值。

    对象做初始化?每一个类都有一个构造函数

    类的构造函数就是在类实例化,第个要内部执行的就是构造函数

    using System;
    
    class User {
        public string name;
        public int age;
        
        public User(string n ,int a){
            this.name = n;
            this.age = a;
        }
    }
     
    public class Test
    {
    	public static void Main()
    	{
            User u = new User("xt张dg",23);
            
            Console.WriteLine(u.age +"__"+u.name);
    	}
    }
    ///输结果是:23__xt张dg
    
    1.什么是构造函数

    一个类一定会有一个构造函数,构造函数通俗的来理解也就是对象初始化函数(对象初始化方法)。为对象初始化的方法我们叫住构造方法。

    • 为什么要有构造方法?

    在对象在创建的同时,也对对象一些属性进行初始化值设置。

    5.方法参数的传递

    1. 形参 -> 传的具体值也就是副本
    2. 引用 -> 传的是变量或者对象的内存地址

    例子:形参

    using System;
    
    class User {
        
        public void fun1(){
            int number1 = 10;
            int number2 = 20;
            Console.WriteLine("first:number1="+number1+",number2="+number2);
            
            this.fun2(number1, number2);
            Console.WriteLine("two:number1="+number1+",number2="+number2);
        }
        
        public void fun2(int n1,int n2){
            n1 = n1 + 10;
            n2 = n2 + 5;
            
            Console.WriteLine("n1="+n1+",n2="+n2);
        }
    }
     
    public class Test
    {
    	public static void Main()
    	{
            User u = new User();
            u.fun1();
    	}
    }
    //输出结果:
    //first:number1=10,number2=20
    //n1=20,n2=25
    //two:number1=10,number2=20
    

    例子:引用传递

    using System;
    
    class User {
        
        public void fun1(){
            int number1 = 10;
            int number2 = 20;
            Console.WriteLine("first:number1="+number1+",number2="+number2);
            
            this.fun2(ref number1, ref number2);
            Console.WriteLine("two:number1="+number1+",number2="+number2);
        }
        
        public void fun2(ref int n1,ref int n2){
            n1 = n1 + 10;
            n2 = n2 + 5;
            
            Console.WriteLine("n1="+n1+",n2="+n2);
        }
    }
     
    public class Test
    {
    	public static void Main()
    	{
            User u = new User();
            u.fun1();
    	}
    }
    //输出结果
    //first:number1=10,number2=20
    //n1=20,n2=25
    //two:number1=20,number2=25
    

    注意: 不管是形参还是引用传递,他们之间都是值传递。

  • 相关阅读:
    傻傻分不清的__proto__与prototype
    Groovy 学习资料
    ES6箭头函数()=>{} 与function的区别
    032_磁盘格式时不同的分区label的区别
    004windows输入输出重定向
    SpringBoot @Configuration、@Bean注解的使用详解(配置类的实现)
    SpringBoot 自定义错误页2(进阶:简单地自定义Error数据、Error视图)
    SpringBoot Lombok使用详解4(@Data、@Value、@NonNull、@Cleanup)
    SpringBoot Lombok使用详解2(@Setter、@Getter、@ToString、@EqualsAndHashCode)
    SpringBoot 自定义错误页1(基础:配置404等错误的静态页面、动态模版页面)
  • 原文地址:https://www.cnblogs.com/beimingdaoren/p/12454242.html
Copyright © 2011-2022 走看看