zoukankan      html  css  js  c++  java
  • c#学习历程1

    基础数据类型

    C#中,最常见的两大数据类型是值类型和引用类型。值类型也可称之为基础数据类型,包含简单类型,枚举类型,结构类型三种。 引用类型包括字符串类型,数组类型,类类型,对象类型,接口类型 和代理类型。

    总结:1.值类型数据固定在栈上,引用类型固定在托管堆上。(所有堆都是托管堆)

               2.引用类型的值放在托管堆的,引用类型名放在栈上。(C#一般不用指针类型,太麻烦了)。


    标识符和关键字

    1.   首字母只能是下划线,字母和@符号,不能是数字

    2.   标识符只能包含字母,数字,下划线。

    3.   不能是c#关键字

    4.   注意:C#中char是占两个字节(16位)的。


    转换类型:1.隐式转化2.显示转化

    1.隐式

    精度低的向精度高的转换

    例:Console.WriteLine(3 + 3.2);

    2.显式(3种)

    //1.(int)
                double d = 22.3;//默认为double类型
                int b=(int)d;
                Console.WriteLine (b);
    //2.(ToInt32)
                int c = Convert.ToInt32 (d);
                Console.WriteLine (c);
    //3.(Parse)
                string s="1234";
                string s3="23.5";

                int e = int.Parse (s);//Parse只接收字符类型。
                //int f = int.Parse (d);错误
        //string s1="12344fc";错误,不能转,字符串里内容只能是数字
                double t = double.Parse (s3);
                Console.WriteLine (t);


    字符类型
                //可以通过下标来访问(和数组类似),但是是不可变序列(值不能改变,但可以改变指向)
                string str="hello world";
                Console.WriteLine (str[4]);

                str="Hello";
                Console.WriteLine (str);


    引用类型(变量放在栈上,指向的内存放在托管堆上,类似于c++中的指针)


    枚举类型(不能在方法内部声明)

    enum Gender
    {
        Female=10,
        Male
    }

                Gender q=Gender.Female;
                Console.WriteLine (q);//输出为枚举变量名。
                Console.WriteLine((int)q);//强制把枚举类型转化为int类型,也可以将int类型转换为枚举类型(枚举变量名)。


    结构体

    struct Apoint
        {
            public int x;//不加public,则默认私有
            public int y;
            //构造函数,
            public Apoint(int _x,int _y)
            {
                x = _x;
                y = _y;
            }

                //使用方法1:(不常用)
                Apoint a;
                a.x = 20;
                a.y = 30;
                Console.WriteLine (a.x);
                Console.WriteLine (a.y);
    注意:使用之前必须给结构体的变量赋值。
                //使用方法2:(一般使用这种方法)
                Apoint ap = new Apoint ();
                Console.WriteLine (ap.x);//0
                Console.WriteLine (ap.y);//0
    注意:new一下会给构体提供一个默认的构造方法初始化变量
                Apoint ap2 = new Apoint (1,2);
                Console.WriteLine (ap2.x);
                Console.WriteLine (ap2.y);

    注意:1.自己写了构造函数,系统提供默认构造函数不会消失的(和class不同),结构体的特性
         2.结构体里必须把所有变量进行赋值(否则用的时候会出错)


    数组类型

        int[] a=new int[5];
                int[] b=new int[]{1,2,3,4,5};
                int[] c={1,2,3,4,5};//b和c,没有区别。两种写法(new只是新建一个类型,与c++不同)

                for(int i=0;i<5;i++)
                    Console.WriteLine (c[i]);
                for(int j=0;j<b.Length;j++)//b.Length表示数组的长度
                    Console.WriteLine (b[j]);

                foreach (int element in b) {//类似于int element=b[i],循环lenth次
                    Console.WriteLine (element);
                }

                string[] str = new string[]{ "a", "b", "c" };
                foreach(string item in str)
                    Console.WriteLine (item);


    变量和常量
               //常量:1.声明同时进行初始化
                      2.常量默认是static类型,所以不能和static类型一起使用(静态区包括常量区,而常量是在常量区存储的)
                      3.常量值不能被修改 


    重载操作符

    <span style="font-size:12px;">public static Apoint operator+(Apoint ap1,Apoint ap2)
    {
    <span style="white-space:pre">	</span>Apoint ap = new Apoint ();
    	ap.x = ap1.x + ap2.x;
    	ap.y = ap1.y + ap2.y;
    	return ap;
    }
    public override string ToString ()//override重写方法
    {
    	return string.Format("x:{0},y:{1}",x,y);//拼接
    		
    }</span>

                //c#中重载操作符的操作数所有必须是自定有类型(比如+号,两个必须是自定义的)
                Apoint ap1=new Apoint(100,200);
                Apoint ap2 = new Apoint (1, 2);
                Apoint ap = ap1 + ap2;
                Console.WriteLine (ap);

    //注意:1.公有静态
    //     2.每个操作数都是自定义类型
    //     3.下标不能重载

  • 相关阅读:
    PAT B1027 打印沙漏 (20 分)
    PAT B1025 反转链表 (25 分)
    PAT B1022 D进制的A+B (20 分)
    PAT B1018 锤子剪刀布 (20 分)
    PAT B1017 A除以B (20 分)
    PAT B1015 德才论 (25 分)
    PAT B1013 数素数 (20 分)
    PAT B1010 一元多项式求导 (25 分)
    HDU 1405 The Last Practice
    HDU 1165 Eddy's research II
  • 原文地址:https://www.cnblogs.com/shuaigezhaoguang/p/5869757.html
Copyright © 2011-2022 走看看