• C# 基础复习 一 数据类型


    数据类型分为:值类型和引用类型

    值类型:byte、short/char、int、long、float、double、decimal、enum、struct

    引用类型:string、object、interface、delegate、array

    值类型是传递值,引用类型是传递地址

    两个相同值的变量,改变其中一个,另一个不受影响

    两个相同地址的变量,改变其中一个,另一个也会跟着改变

    object.ReferenceEquals(a,b) //判断是否是同一对象、地址

    从大向小转换时需要强制转换,从小向大转换系统会自动进行隐性转换

    所有的赋值和运算操作都会触发自动转换

    隐性转换永远是小的类型转为大的类型

    char转为int会变为ASCII码,反之ASCII码也可以转化为char类型

    注:ASCII码是一种和字母、符号对应的数字,即用数字表示字母、符号

    如果两个相同类型之间进行运算,不会触发自动转换

    如:3/5会得出0 因为3和5都是int,结果依然保持int类型,不会自动转为double

    char和short虽然大小相同,但是范围不同,所以两个类型无法互相赋值

    char是从0到65535 short是从-32768到32767

    有些类型在赋值时要带指定的符号

    decimal M

    float       f

    long       L

    例如:

    decimal d = 3.14M

    枚举是一组有限的值

    枚举相对于数据类型可读性要高,又比字符串性能高

    枚举一般用于表示性别,民族,地区之类不会变动的数据,经常变动的数据则不推荐使用枚举

    五个访问修饰符的访问范围

    private  本类中可用

    protected   子类和本类中可用

    public         任何地方都可用

    internal       当前程序集中可用

    protected internal   子类或者当前程序集的所有类中可用

    访问修饰符的作用:限制访问,调用时是否有权利使用

    类的默认访问修饰符是 internal 成员变量的默认访问修饰符是 private

    属性是对字段的一种封装,通过get set方法保证字段的数据有效性

    get set的本质就是两个方法,get在取值时触发,set在赋值时触发

    public void id_set(int value)
    {
        id = value;
    }
    
    public int id_get(int value)
    {
        return value;
    }
    public int Id {get=>id,set=>id=value};//属性还可以用lambda表达式书写(不建议使用)
    public int Id {get;set;} = 10;//可以这样直接赋值

    占位符 string.format

    string a = "hello";
    string b = "world";
    
    Console.WriteLine(String.Format("{0},{1}!",a,b));

    输出一段有很多变量的语句时,不断的拼接变量非常麻烦,这时可以通过使用string.format,用占位符解决

    还有更方便的写法

    Console.WriteLine($"{a},{b}!");

    但是仅高版本VS才能使用

    构造函数用于类的初始化

    构造函数的访问修饰符可以和类的不同

    构造函数的参数可以设置默认值,设置了默认值的参数为选填,没设置默认值的参数为必填

    有构造函数后,如果要new这个类的对象,就必须给他构造函数上相应的参数

    public class Class1
        {
            int a;
            public Class1(int a)
            {
                this.a = a; //构造参数和类的成员变量冲突时,用过this区分
            }
        }
    
    Class1 a = new Class1(1); //给它对应的int a的值

    如果不给的话就会报错

     public class Class1
        {
            int a;
            public Class1(int a = 1)
            {
                this.a = a; 
            }
        }
    
     Class1 a = new Class1();//有默认值的参数为选填,即使不给也不会报错

    不只是构造函数,方法的参数也可以这样设置默认值

     public void show(string a = "hello")
            {
                Console.WriteLine(a+"world");
            }

    代码重构:有部分相同代码时,直接用之前的代码

    public Student(int id,string name='XXX')//为学生类初始化id和name
    {
        this.Id = id;
    }
    
    public Student(int id,string name='XXX',string address):this(id,name)//初始化id和name操作和上面一样,但是多了一个地址,所以可以直接用上面的构造完成相同的操作
    {
        this.Address = address;
    }
    //定义方法时同样可以使用
    public int add(int num1,int num2)
    {
        return num1 + num2;
    }
    public int add(int num1,int num2,int num3)
    {
        return add(num1,num2)+num3;
    }
    throw new ArgumentException("");//自定义一个错误

    索引器

    索引器可以让对象以集合的方式赋值和取值

    public class Test
        {
           //01.首先定义一个数组
           private string[] name=new string[2];
    
           //02.根据创建索引器的语法定义一个索引器,给name数组赋值和取值
           public string this[int index]
           {
               get { return name[index]; }
               set { name[index] = value; }
           }
    
        }
    
    
    
     static void Main(string[] args)
            {
                //01.首先你得实例化Test类的对象
                Test test=new Test();
                //02.利用索引器给Test类中的数组赋值
                test[0] = "张总";
                test[1] = "吴总";
                //03.打印查看效果
                for (int i = 0; i < 2; i++)
                {
                    Console.WriteLine(test[i]);
                }
                Console.ReadLine();
            }

    索引器的本质就是属性

  • 相关阅读:
    onLoad和DomContentLoad的区别
    懒加载和预加载区别
    各大浏览器特点
    移动端适配
    清除浮动的方法
    rem的计算
    粗结MySql数据库基础知识点之一
    单例模式(饿汉式单例模式与懒汉式单例模式)
    关于ajax技术
    浅谈EL与JSTL
  • 原文地址:https://www.cnblogs.com/nicopoiduang/p/8885703.html
Copyright © 2020-2023  润新知