C#第三章 对象和类型

来源:互联网 发布:淘宝外套女装新款 编辑:程序博客网 时间:2024/05/17 22:26

第三章       对象和类型

1.  类和结构的区别:

a.  最大的区别是存储位置不一样:类是引用类型,存放在堆上,结构式值类型,存放在堆栈上。所以new运算符与类的工作方式不同,不分配内存,只是调用构造函数,初始化字段

b.  结构不支持继承

c.  结构不允许定义无参数构造函数,不能给字段提供初始值

2.  类成员

类中的数据(字段、常量、事件)和函数(方法、属性、构造函数和终结器、运算符以及索引器)称为类的成员

(1)     ref参数  迫使参数通过引用传送给方法  带入前初始化

(2)     out输出参数  参数前加out关键字时,传递给该方法的变量可以不初始化

    static void Main(string[] args)

        {

            //ref关键字

            //int[] ints = {10};

            //int i = 10;

            //SomeFunction(ints,ref i);

            //Console.WriteLine(ints[0].ToString()+i.ToString());

 

            //out关键字

            int i;

            SomeFunction2(out i);

            Console.WriteLine(i);

        }

        /// <summary>

        /// ref

        /// </summary>

        /// <param name="ints"></param>

        /// <param name="i"></param>

        static void SomeFunction(int[] ints, ref int i)

        {

            ints[0] = 100;

            i = 100;

        }

        /// <summary>

        /// out

        /// </summary>

        /// <param name="i"></param>

        static void SomeFunction2(out int i)

        {

            i = 100;

        }

(3)  方法重载   方法中的参数名称、参数类型或参数个数不同

a.   两个方法不能仅在返回类型上有区别

b.   两个方法不能仅根据参数是声明为ref还是out来区分

(4)     构造函数

C#中默认有一个没有参数没有返回值的构造函数

把构造函数定义为privateprotected,不相关的类就不能访问

public class MyNumber

    {

        private int number;

        private MyNumber(int number)

        {

            this.number = number;

        }

}

在这个例子中,我们没有为MyNumber定义任何公共或受保护的构造函数。所以MyNumber类不能使用new运算符在外部代码中实例化(但可以在MyNumber上编写一个公共静态属性或方法,已进行实例化),适用于以下两种情况:

类仅用作某些静态成员或属性的容器,因此永远不会实例化

希望类仅通过调用某个静态成员函数来实例化

a.静态构造函数    没有访问修饰符,不能带任何参数,一个类只能有一个静态构造函数,显然,静态构造函数只能访问静态成员

(5)     只读字段

    public class DocumentEditor

    {

        public readonly DateTime CreationDate;

        public DocumentEditor()

        {

            CreationDate = new DateTime(2002,1,1);

        }

}

把字段声明为只读类型,表示其值只能在构造函数中设置

3.  结构与类的区别

结构是值类型,不是引用类型。他们存储在堆栈中火存储为内联(如果他们是对象的一部分,就会保存在堆中),其生存期的限制与简单的数据类型一致

结构不支持继承

结构的构造函数的工作方式有一些区别。尤其是编译器总提供一个无参数的构造函数,这是不允许替换的

使用结构,可以指定字段如何在内存中布局

4.  部门类(partial

Partial关键字允许把类、结构或接口放在多个文件中。如果没有类的源代码时,可以使用部分类给其添加内容

//BigClassPart1.cs

partial  class TheBigClass

    {

        public void MethodOne()

        {

            Console.WriteLine("one");

        }

}

//BigClassPart2.cs

    partial  class TheBigClass

    {

        public void MethodTwo()

        {

            Console.WriteLine("two");

        }

}

5.  静态类(static)

如果一个类只包含静态的方法和属性,该类就可以是静态的。静态类不能创建实例。条用静态类中的方法:类名.方法名

原创粉丝点击