最近在学习C#,手边又没有本子,无奈之下就将需要记得东西写在博客上,就当自己的笔记本了。对大家有用就好,没有也不要批我。
在面向对象语言中,封装数据的基本单位是类,用户也可以在C#中自己定义类,其定义方法为:
[访问修饰符] class 类名称[:父类名]
{
[成员修饰符] 类的成员变量或者成员函数;
}
访问修饰符包括public,private、protected、internal、protected internal和partial.
public:表示任何外部的类都可以不受限制地存取这个类的方法和数据成员。
private:表示类中的所有方法和数据成员只能在此类中使用,外部无法存取。
protected:表示除了本身的类可以使用之外,任何继承自此类的子类都可以进行存取。
internal:表示在当前项目中都可以进行存取。该访问权限用于基于组件的开发,这是由于它们可以使组件以私有方式工作,而该项目外的其他代码均无法访问。
protected internal:表示仅限于当前项目进行存取。
partial:表示局部类型,类的定义和实现可以分布在多个文件中,但都需要使用partial进行标注。
类成员包括数据成员、函数成员和嵌套成员。数据成员包括成员变量、常量和事件;函数成员包括方法、构造函数、析构函数、属性、索引器和操作符等。嵌套类型是在类内部定义的类、结构和枚举等。
C#常用的基础类
Convert 类:位于system命名空间下,用于将一个值类型的数据转换成另一个值类型的数据
String类:表示的是一系列不可变的字符。不可变是因为无法直接修改给该字符串分配的堆中的字符串
StringBuilder 类:位于System.Text命名空间下,此类是在原来字符串占用的内存空间上进行处理,可以动态的分配占用的内存空间大小。
DateTime类、TimeSpan类
Math类:位于System命名空间下,为通用数学函数提供常量和静态方法
属性的声明
属性在类模块内是通过一定的方式声明的,即先指定字段的访问修饰符,后跟属性的额类型、属性的名称,最后是声明get访问器和set访问器的代码模块。表示如下:
<span style="font-size:18px;">AccessModifier Type PropertyName
{
get
{
//取值代码
}
set
{
//赋值代码
}
}</span>
如果一个属性只有get语句部分,则不能对其进行赋值操作,所以该属性就是一个只读属性,同样对于一个只写属性,可以采用只提供set方法来实现。
构造函数
构造函数是在类被实例化时需要首先执行的函数,用于完成对象的初始化操作。它的定义与方法的声明类似,但是没有返回值,它的名字必须与它所在的类的名字相同。
在类中声明构造函数时必须指定标识符和构造函数体。通常,构造函数的类型修饰符为public类型。若是private类型,则表示该类不能被实例化,且用于只含有静态成员的类中。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace gouzao
{
public class gouzao
{
public int salary;
public gouzao(int daysalary)
{
salary = daysalary * 290; //计算日薪
}
public gouzao(int weeklySalary, int weeks)
{
salary = weeklySalary * weeks; //计算周薪
}
}
class Program
{
static void Main(string[] args)
{
gouzao p = new gouzao(1000);
System.Console.WriteLine("员工日薪:{0}", p.salary);
gouzao f = new gouzao(500,52);
System.Console.WriteLine("员工周薪:{0}", f.salary);
Console.ReadKey();
}
}
}
析构函数
析构函数是在类被删除之前最后执行的函数,用来释放被类实例所占用的资源,一个析构函数的表示方法为:
class Book
{
...
~Book()
{
Console.WriteLine("Book 已经被删除");
}
}
析构函数是自动调用的,没有修饰符,也不带参数。一个类中有且只有一个析构函数,无法进行重载。
命名空间
命名空间包含可在程序中使用的类、结构、枚举、委托和接口,下面是一些常用的命名空间:
System:定义通常使用的数据类型和数据转换的基本.NET类
System.Collections:定义列表、队列和位数组字符串表
System.Data:定义ADO.NET数据库结构
System.Drawing:提供对基本图形功能的访问
System.IO:允许读、写数据流和文件
System.Text:ASC||、Unicode、UTF-7和UTF-8字符编码处理
简单的说就是通过在程序开头包括:using System;则可以使用代码:Console.WriteLine("hello");代替System.Console.WriteLine("hello");