黑马程序员_学习日记1_C#基础

来源:互联网 发布:js中disabled 编辑:程序博客网 时间:2024/05/22 06:24
---------------------- Windows Phone 7手机开发、.Net培训、期待与您交流! ----------------------

CSDN终于可以发帖了,把前几天的补上......

412

今晚网速很慢,下黑马视频很卡,我下了一本《C#基础教程》的电子书来学习,做笔记如下:

一、IL(Microsoft中间语言)的五大特性:

1实现给定接口的类,必须提供该接口的所有方法和属性。例如:

有个接口IUser ,其有age,sex,userName 属性,有setUname(),getAge()方法。有个

类,UserClass 继承自IUser。这时, UserClass 就必须实现IUser 的所有方法setUname(),getAge()和所有属性age,sex,userName。

2、值类型和引用类型的巨大差异:值类型变量直接保存其数据,而引用类型变量保存其数据地址。值类型一般存在堆栈中,引用类型一般存在托管堆中。

3、强数据类型:所有的变量都明确的被标定为某个特定的数据类型,IL不允许对模糊数据类型进行操作,在javascript中的var变量就是模糊类型数据。不过现在的.NET3.5中也加入了var

4使用异常来处理错误try{}catch{}finally{}

5属性的使用:用户定义的Attribute和其对应的数据类型或方法的元数据放在一起,这对于文档说明很有用,它们和反射技术一起使用,执行特定的任务。(什么意思?)

二、几个重要概念:

1、程序集:

程序集是包含编译好的、面向.Net Framework的代码的逻辑单元。程序集是完全自我描述性的,也是一个逻辑单元。程序集的一个重要特点是其包含的元数据描述了对应代码中定义的类型和方法。程序集也包含了自身的元数据。

程序集有私有程序集和共享程序集之分。

2、反射:

因为程序集存储了元数据,包括在程序集中定义的所有类型和方法,所以可以编程访问这些元数据,这种技术就称为反射。

3、命名空间:

命名空间是.NET避免冲突的一种方式。在实例化类时,我们采用命名空间.类名这样的方式来实例化。

 

关于面向过程的知识、面向对象的基本概念、类和方法的基本知识,我有所掌握,所以从构造函数开始学习。

三、构造函数

构造函数是和类名相同的类的一个方法。

1如果没有显式的声明,在系统会在编译的时候,自动生成一个不带参数的,不执行任何动作的构造函数。但如果显式的声明了构造函数,系统就不会自动生成了。如果声明的构造函数是有参数的构造函数, 我们在实例化类的时候,就必须以该构造函数而实例化类。

1

public classTest

    {

        publicint num;

        publicTest(int i)

        {

            this.num= i + 5;

        }

        staticvoid Main()

        {

            //传递了一个参数“10”,如果用TestclassOne = new Test();就会报错,因为显式声明了一个带参数的构造方法

Test classOne = newTest(10);

            intx = classOne.num;

            Console.WriteLine(x);

            Console.ReadKey();

        }

}

     2、静态构造函数:一般,在类中有一些静态字段或者属性,需要在第一次使用类之前从外部数据源初始化这些静态字段和属性,这时我们就采用静态构造函数的方式来解决。(不懂这句话是什么意思?静态构造函数到底是干嘛用的?)

    无参的实例构造函数可以和静态构造函数在类中共存。因为静态构造函数是在加载类

的时候执行的,而实例构造函数是在创建实例时执行的,两者并不冲突。

2

public classTest

    {

        //静态构造函数

static Test()

        {

            Console.WriteLine("www.gosoa.com.cn");

        }

        //无参的实例构造函数

        publicTest()

        {

        }

        staticvoid Main()

        {

            TestoneClass = new Test();

            Console.ReadKey();

        }

}

该程序运行的结果是 www.gosoa.com.cn 在类的对象创建的时候,静态构造函数已经运行了。

3、构造函数初始化器

public classTest

    {

        privatestring domain;

        privatestring url;

        publicTest(string dom,stringurl)

        {

            this.domain= dom;

            this.url= url;

        }

        //构造函数初始化器(我问黑马审核群里的战友,他们很多也没听说过)

        publicTest(string dom)

            : this(dom, "www.gosoa.com.cn")

        {

        }

        staticvoid Main()

        {

            TestclassOne = new Test("gosoa");

            Console.WriteLine(classOne.url);

            Console.ReadKey();

        }

}

4、只读字段(readonly):只读字段比常量灵活的多,常量(const)字段必须在声明之初就初始化,但readonly字段甚至可以进行一些运算再确定其值。

注意,可以在构造函数中对只读字段赋值,但不能在其他地方赋值。(不太懂,下面是黑马审核群郭同学的解释,让我茅塞顿开:比如说,你现在要做一个RMB和美元之间换算的例子,但一开始你不知道比例是多少。这时候,你就可以在类的构造函数中使用一个只读字段来读取这个比例,然而在类的外部,这个比例只能使用不能更改

 

 

---------------------- Windows Phone 7手机开发、.Net培训、期待与您交流! ----------------------详细请查看:http://net.itheima.com/
原创粉丝点击