• 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.下标不能重载

  • 相关阅读:
    【Android】升级ADT 22 引发的错误
    【Android】使用SearchView时软键盘不支持actionSearch的问题
    Mac 升级 OS X 10.8.2 后 VirtualBox 无法启动的问题
    2012年总结
    【Andorid X 项目笔记】魅族照片剪切问题(4)
    【读书笔记】浪潮之巅
    ormlite更改数据库默认位置
    Android实用代码七段(二)
    Android实用代码七段(三)
    【Android】嵌套Fragment无法接收onCreateOptionsMenu事件的问题
  • 原文地址:https://www.cnblogs.com/shuaigezhaoguang/p/5869757.html
Copyright © 2020-2023  润新知