C#学习笔记一

C#语言的基础知识

C#要求所有的程序逻辑都包含在一个类型定义中(类型是指集合{类、接口、结构、枚举、委托}中的一个成员)。

每一个可执行的C#应用程序必须包含一个且唯一定义了Main()方法的类。该方法用来指明应用程序的入口点。该方法应是公共的(public)、静态的(static)。其返回值为voidint类型。

类是一个关于用户定义类型(UDT)的定义。而对象则描述的是某个类在内存中的一个特定实例。

C#中,new关键字是创建一个对象的标准方法new关键字负责给指定对象计算正确的字节数,并从托管堆(heap)上获得足够的内存。

  C#的对象变量事实上是对内存中对象的引用,并不是实际的对象本身。

C#中类的默认构造函数可以由系统自动提供或用户显式重定义。

C#中类的默认构造函数保证所有的成员数据都设置成一个合适的默认值(所有的构造函数都具有这种行为),这与C++是不同的。

C#中构造函数的名字跟其所构建的类一样,并且它们从来不提供返回值(即便是void也不行)。即构造函数没有返回值

一旦为一个类类型定义了自定义的构造函数,其系统默然构造函数就被删除了。如果希望允许对象使用默认构造函数创建类型的实例,则必须显式地重定义它。

由于.NET垃圾回收器的作用,会自动释放所分配的内存,因此C#不支持delete关键字。

C#的可访问性关键字

C#访问修饰符

作用

public

不仅可以从一个对象变量访问,且允许任何子类访问

private

只允许其定义所在的类中访问,在C#中,所有的成员默认都是private

protected

不仅允许在定义它的类中使用,又可以在任何子类中使用。但是不能从对象变量访问

internal

可以在同一个程序集内被任何类型所访问

protected internal

定义了一个对象的访问被限制在当前的程序集,或者当前程序集中从定义它的类所派生的类型中

受保护的成员仅仅在创建类层次的时候才有实际的用处。

类型(类、接口、结构、枚举和委托)也可以带访问修饰符,但只能用publicinternal。(注解:嵌套类型除外)

C#internal是类型默认的可访问性,所以如果不使用public关键字指定可访问性,实际上是创建了一个内部类型。一个内部类型,仅能在定义它的程序集中使用

类类型的成员变量可以不用初始化,系统自动(即类的默认构造函数)根据具体的数据类型设置一个默认值;而成员作用域中声明的局部变量,必须在使用它们之前进行赋值初始化。(局部变量的强制赋值有一个例外,就是这个变量用作输出参数。)

C#允许在声明的时候给类型的成员数据赋一个初始值(这在C++中是不允许的),当然因为此时成员的赋值发生在构造函数逻辑之前,所以如果在构造函数的作用域中又给一个字段赋值了,则取消了前面的成员赋值。

C#const关键字不能被用来限定参数或返回值,而被保留用来创建局部或实例一级的数据。要赋给常量的值必须在编译时就确定,因此常量成员不能被赋给对象的引用。

要创建一个在运行之前不知道初始值而且不可改变的字段,在C#中是通过利用readonly关键字定义只读字段来实现的。只读字段的值可以在构造函数的作用域内被指定。

static)修饰成的静态成员必须直接从类级别来调用,而不能从类型的实例调用。且静态成员只能操作其他静态成员。而实例数据则是从类型的实例级调用。

一个给定的类(或结构)只能定义一个静态构造函数,且不带任何访问修饰符,也不能带任何参数,它在任何实例级别的构造函数之前执行。

C#2005通过引入静态类(static class),使得这个类不能使用new关键字来创建实例对象,仅包含静态的成员或字段

C#中方法参数修饰符

参数修饰符

作用

如果一个参数没有用参数修饰符标记,则认为它将按值传递,意味着被调用的方法收到原始数据的一份副本

out

输出参数是由被调用的方法赋值的(按引用传递)

params

允许将一组可变个数的相同类型的参数作为单独的逻辑参数进行传递。方法只能有一个params修饰符,而且必须是方法的最后一个参数

ref

调用者赋初值,且可以由被调用的方法可选地重新赋值(按引用传递)

 

原文地址:https://www.cnblogs.com/lovecode/p/1412104.html