zoukankan      html  css  js  c++  java
  • 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();
            }

    索引器的本质就是属性

  • 相关阅读:
    85. Maximal Rectangle
    120. Triangle
    72. Edit Distance
    39. Combination Sum
    44. Wildcard Matching
    138. Copy List with Random Pointer
    91. Decode Ways
    142. Linked List Cycle II
    异或的性质及应用
    64. Minimum Path Sum
  • 原文地址:https://www.cnblogs.com/nicopoiduang/p/8885703.html
Copyright © 2011-2022 走看看