C#语言中的几个比较基础的名词解释:
1、类 和 类的结构:
class【引用类型,继承自system.object类】和struct【值类型,继承自system.valuetype类】都是可以用来定义一个类的。
类的定义:
class myclass
{
}
而如果我们确定这个myclass类的公共、私有以及保护等类型的时候,就要在前面加上:
public/private/protected class myclass
{
}
PS:所谓的基类,可以理解成像上面说过的class类就是从system.object类继承而来的,那么我们就称呼system.object类为基类。
引入另一个概念:接口【interface】。
接口:就是当class想继承几个类的时候,但是没有办法实现的情况下,就要借助接口来给与帮助。
例子:public partial class Save : System.Web.UI.Page;
在上面这个例子里面,我们定义的是一个局部的类save,而这个类继承了System.Web.UI.Page。
类和结构:
一、类是引用类型在堆上分配,类的实例进行赋值只是复制了引用,都指向同一段实际对象分配的内存;
类有构造函数和析构函数{这两个函数都是实函数,都不能使虚函数。}
类可以继承和被继承。
二、结构是值类型【struct】在栈上分配(虽然访问时间比较堆要少,但是栈的资源有限),结构的赋值将分配产生一个 新的对象;
结构没有构造函数,但可以添加。结构没有析构函数;
结构不可以继承自另一个结构或者是被继承,但和类一样可以继承自接口。
【堆和栈的概念:
堆:在事先不知道程序所需要的对象的数量和大小或者是对象太大不适合用堆栈分配器的情况下,用来动态分配和释 放程序所使用的对象。
栈:是一种数据结构,是只能在某一端插入和删除线性表。原则是后进先出。】
2、对象:
我们已经知道了类的概念了,而【具有相同或者是相似的性质的】对象的抽象就是类。可以这样子理解就是:
对象的抽象就是类,而类的具象就是对象。或者说类的实例化就是对象。
PS:类的成员有:属性、方法名、字段;
而对象的实例名也包括上面这三项,所以可以更清楚的解释这两者之间的关系。
3、属性和方法:
举几个属性的例子:
Response.height/weight/color;等等
举几个方法的例子:
console.write/writeline/beep;等等
用很土的方式去解释这两者之间的区别的话:属性就相当于说是人的身高体重之类的,后面不跟括号,而方法则指的是举动行动方式之类的,后面是要跟括号的。
例子: Response.Write("删除成功!");
Response.End();
4、函数:
一、函数的定义要有一下几个部分:
两个关键字:static【静态:static void Main(string[] args);就是表示的是将函数Main中的代码存放在静态存储区的;而且还表示我们声明的函数Main是个静态函数。】和void【没有返回值的。】
函数名后面要跟圆括号,就像上例中的Main()。
而函数后面还有一个要执行的代码块。
【一个函数不仅仅只是一个简单的名词,它代表了一个小程序的功能的体现。】
例子:
class program
{
static void Write()
{
console.Writeline("你来自火星!");
}
static void Main(string[] args)
{
Write();
Console.readkey();
}
}
二、赋值:
先看个例子:
string cmdText = "delete from StudentInfo where StudentID = @StudentID";
首先我们分析一下这个例子,第一个部分就是我们声明的类型:字符串;而cmdText就是我们声明的字符串的名字,而后面引号里面的字符串就是直接赋给cmdText这个字符串常量的值。
还有诸如int、double、float等等之类的也跟上面是类似的。
ps:在声明了常量之后,一般都是要赋值的,也是我们所说的初始化。
例子:int xsize=40,ysize;
虽然这里ysize并没有赋值,但是当我们在程序里面运行要用到的时候还是要给它赋初值【初始化】的。
三、函数的调用:
同样的我们先看一个例子:【姑且先不管他是否完全正确,现在我先注释一下!】
#include <iostream>
using namespace std; //命名空间的名字叫做std;
void fibo(int &a,int &b,int &c)//定义函数fibo;
{
for(int iter=2; iter < 40; iter++)
{
c =a+b;
cout <<"F(" <<iter <<")\t=\t" <<c<<endl;
a=b;
b=c;
}
}//函数体,执行了函数的功能代码;
int main() {
int x0, x1, x2=0;
cout << "Podaj F(0) = ";
cin >> x0;
cout << "Podaj F(1) = ";
cin >> x1;
fibo(x0,x1,x2);//调用函数。
return 0;
}
ps:函数每被调用一次只会返回一个值。
四、构造函数和析构函数:
在上面已经提到过了构造函数和析构函数,现在更深入的理解一下:
例子:class Myclass
{
public Myclass()
{
}
}
在这例子中,我们看到构造函数Myclass和包含他的类是同名的,而且这个函数没有参数,但是是可以带参数的【这个很重要!】。由于这个public,说明这个函数是个公共函数,所以类的对象可以使用这个构造函数进行实例化。
在。NET中使用的析构函数叫做finalize()【跟class一样是从system。object类提供的。】
而我们再看下面的例子:class Myclass
{
~ Myclass()
{
}
}
也就是类的析构函数由带有~前缀的类名(与构造函数的相同)来声明。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。