我对.NET平台下开发语言C#的理解.
参加工作已经满一年了.
发现在工作中大多数做的都是CURD.
一个项目就 一个Model层,一个DAL层,一个BLL层.在加一个ADO.NET SQLHERLPER.
很长时间没有像以前刚学软件开发时的那种冲劲和钻进了.
感觉工作好像仅仅只是一个熟悉的工程,就想一个泥瓦工一样.学的时候,可能需要学会各种贴砖手法.
但真到工地上了,用到了可能只有仅仅的其中一两种.
但不管是用泥瓦工贴砖,还是代码民工码代码.
基本功力还是得必须掌握的.
下面我就写一下,我自己一年来对.NET开发语言C#的理解.
开发语言,在我的印象中,好像最重要的两个东西就是:"变量和函数".
变量是一个容器,用于存储数据,变量有类型.不同的容器存储的数据也不一样.
函数是一个可重复使用的代码段(有很多课外书对函数的定义十分高神和神秘,让人摸不着头脑).
不过对于像c这种面相过程的语言来说,理解函数起来可能更加简单.
.NET作为第四代(第一代:机器语言;第二代:汇编语言;第三代:面相过程;第四代:面相对象)高级语言的开发平台.所以一下把变量和函数的"种类"变的多了起来.
在.NET中,函数分 实例函数,静态函数,虚函数,构造函数,析构函数等.
变量分:静态变量,实例变量,常量变量,只读变量等.
因为.NET中存在类这样一个概念(类就是一个引用类型的数据结构)
我在这更希望把.NET中(特别指C#开发语言)中的变量,就分为两种:
全局变量和局部变量.
全部变量就是类的字段,这里包括静态字段和实例字段.
局部变量,就是申明在函数内部或者函数参数的变量.你无法将函数的参数和函数的内部变量申明成静态的.
因为函数的调用是基于堆栈的.在调用完毕之后会消除对内存的占用.
他们之前的最主要的区别之一:全局变量(静态和实例),你不去初始化它也没关系..NET平台会默认的去初始化它.(值类型 0 引用类型 null 布尔类型 false),起码在编译阶段,这些全局变量,你不去管它,它也不会报错.
局部变量则必须要满足,申明,赋值,在使用的原则,如果三者缺一,则编译都不通过.局部变量,必须由我们coder全程把控.
在说函数.
在C#中,函数分实例函数和静态函数.
但我觉得这是一种特别书面的叫法.
因为在我的理解中,函数无非就是一段可重复调用的代码.
在.NET Runtime看来,函数其实挺简单的.
但为什么C#里为什么要分实例函数和静态函数呢?
我觉得是调用方式的问题.
通常,实例函数的调用都是 obj.Method(); //
在定义实例函数的时候,我们通常可以在函数体内书写 this关键字,this关键字代表的是当前类的实例本身(和函数一点关系都没有).
所以,我在这得出的结论就是,实例函数和静态函数没本质区别,唯一的区别就是 实例函数比静态函数要多一个参数,这个参数就是当前对象this本身.
所以上面的实例函数调用代码,实际上在.NET Runtime看来,调用形式应该是这样的 Method(obj);
所以实例函数是一段可重复使用的代码,在使用上有一点小限制(或者默认的行为),函数必须带一个参数,这个函数就当定义这个函数对象类的实例.
.NET 4.0 加入的扩展函数也可以证明我上面的观点.
因为扩展函数的本质,就是一个静态函数,将需要扩展方法的对象作为这个静态函数的第一个参数传递进去了而已.
而静态函数则更为单纯,它就是一段可重复使用的代码.程序员可以完全决定此段代码需要哪些初始化参数.仅此而已.
所以,我最后的结论是:
变量就两种:局部和全局 . 局部,由coder全程把控. 全局..NET runtime会帮我们多做一步初始化的操作.
函数就一种:就是一段可重复执行的代码. 唯一区别,实例函数需要默认带一个参数,而静态函数则不需要.
小弟第一次在博客园上发表自己的观点,很多地方写的都不完整和严谨,也不懂怎么排版.
希望大家见谅.
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。