1. 面向对象程序概念
C#是一个由微软开发的,现代的、通用的、面向对象的编程语言。那么什么是面向对象?
1.1 官方解释
百度百科是这样说的:
面向对象编程(ObjectOrientedProgramming,OOP,面向对象程序设计)是一种计算机编程架构。OOP的一条基本原则是计算机程序是由单个能够起到子程序作用的单元或对象组合而成。OOP达到了软件工程的三个主要目标:重用性、灵活性和扩展性。为了实现整体运算,每个对象都能够接收信息、处理数据和向其它对象发送信息。
1.2 个人理解
总的来说,区别于面向过程的语言,such as C语言,面向过程的语言注重于问题的过程,如何解决这个问题,因而会将过程的内容用变量和函数来说明,知道解决这个问题。
然后,面向对象,就是将问题抽象为一个类,将问题的内容集合在一起,用属性和方法来描述它们,然后实例化这些问题为对象,每个对象都执行相应的代码。
个人感觉,使用类编写代码,就像C语言的结构体那样,将离散的数据整合在一起,从而对于全局的把握也更加的轻松。
2.定义类、创建对象
2.1 类的定义
public class Student
{
private string Name;
private int Age;
public void setName(string name)
{
this.Name = name;
}
public void setAge(int age)
{
this.Age = age;
}
}
在这里,定义了一个Student类,类有Name和Age两个属性,setName()和setAge()两个方法。
类的定义类似于结构体,但是结构体是不包含方法,也就是函数的。定义属性和方法几乎和C语言定义变量和函数一致,不同的是在面向对象语言中,前头有访问修饰符:public、private、protected,用来对属性和方法的作用域进行限制。
2.2 类的实例化
Student stu = new Student();
stu.setName("小明");
stu.setAge("20");
创建一个对象并实例化,为这个对象分配了内存空间。在C#中,凡是创建了一个类对象,如Student stu;则在栈内存中开辟一块空间,用于存放Student类的一个实例化对象的地址。
也就是说,只要new了该对象,就在堆内存创建一个stu对象,包含了每个属性的一块内存空间。而在堆区的这块内存的首地址则会赋值给栈空间的stu对象。
2.3 成员变量
在类内定义的变量为成员变量,成员变量的作用时间和类一样,也就是说:只要类实例化,就像C语言使用malloc那样,在堆区开辟了内存空间后,就可以一直存在直到程序结束或被程序员自己delete。
2.4 命名空间
namespace即为命名空间,主要解决一下两个问题:
(1)为很长的标识符名称创建一个别名,提高代码的可读性。
(2)避免和C#内部或者第三方库的类、函数、变量等的重名问题,使用了namespace,就可以在命名空间内愉快地给变量取你想要的名字啦。