1read & readline&readkey区别:

read()返回值:int型,一次读一个字符,等待用户输入,如果read()多于用户输入字符,则会读“回车,换行”

readline() 返回值:string型,一次读一行;

readkey:用户输入后,自动读取;不用换行;

2namespaceclass可以嵌套,class内部的方法,属性……不可以。

3、数据类型:3

1>内置类型2> 用户自定义类型3>匿名类

静态成员是属于类的,非静态的成员是属于类的实例。

1Readonly:可以在构造函数中修改数值,即在new的时候确定,它是属于某个对象的;

2static:属于类;

3const:属于类;用法同static

1class Program

    {

        int i = 19;

        const int ct=23;

        static int s=67;

        readonly int ro = 66;

 

        public Program()

        {

            ro = 33;

        }

        public Program(int ro)

        {

            this.ro = ro;

        }

        static void Main(string[] args)

        {

            Program p = new Program(55);

            Console.WriteLine(p.ro);

            p.i = 11;

            //p.ro = 33;

            //Program.ct = 44;

            Program.s = 55;

        }

    }

 

43种命名方法

1)匈牙利命名法:属性+数据类型+变量名称;

2)驼峰命名法:首字母小写,以后的每个单词首字母大写;

3)帕斯卡命名法:每个单词首字母大写。

5、值类型(struct)与引用类型(class):

1)所有的值类型本质上都是struct类型,所有的引用类型本质上都是类      

2)(对比表)

 

值类型

引用类型

定义

表示实际数据

表示对象的引用

存储

数据本身

对象的地址

存储位置

线程堆栈

托管堆

实例

intchar、结构、枚举

类,接口,数组,字符串,委托

3)引用类型实例原理:

代码:

1           static void Main()

2           {

3             Product p1 = new Product();

4              p1.PrintProductMessage();

5           }

当程序执行到第三行时,托管堆中首先存放一个已经存在的Product类,该类中存放static字段及方法属性p1存入线程堆栈中,当new的时候在托管堆中开辟一个存储空间,存放实例对象;该实例对象中存放了类中定义的非静态字段;所以对象本身并没有存储方法;即使非静态方法要由对象实例(p1)来调用。

6vardynamic:(Dynamic是一种动态类型)

Var:只能用于局部变量的定义,不能定义类的属性,方法的返回值以及方法的参数类型,而dynamic可以;

 

7、类型转换:parseConvert.To

Parse:类型.parsestring);

如:int.parse(“123”);

强类型转换

例如:int i=convert.toint32(“12”);

8、装箱、拆箱

装箱:值类型到object类型,或到此值类型所实现的任何接口的转换。对值类型装箱,会在堆中分配一个对象实例,并将该值复制到该实例中;

例如:int i=12

Object o=i

拆箱:

定义:从object类型到值类型,或从接口类型到实现该接口的值类型的显示转换。

步骤:1、检查对象实例,确保它是给定值类型的装箱值;

2、将该值从实例复制到值类型的变量中;

例如:int i=12

Object o=i

Int f= (int)o;