近期开始接触到在校学生、高校实习生和毕业生,在此说一下笔者对这些徘徊在职场门口的学生一些建议,希望能给这些初学者进入软件开发行业带来一些帮助,使得毕业生能更顺利的进入软件开发公司开始职场生涯,人生来一个完美的转弯。

------------------------------------------------------------------------------------

类型样式

在定义类型的时候可以指定类型的一些特性,这些样式有
static class 静态类
被“static”修饰的类就是静态类型,静态类型其所有的成员都必须标记为静态的,否则会编译错误。静态类型一般用于容纳一些通用的例程,比如某些科学数值运算等。
以下C#代码就定义了一个静态类型
public static class MyStaticClass
{
public static int Sum(int a, int b)
{
return a + b;
}
}
在代码“public static class MyStaticClass”中,“public”定义类型为公开的,“static”说明该类型是静态的,“class”说明正在定义一个类类型,“MyStaticClass”是类型名称。
在这个类型中定义了一个静态方法Sum,在静态类型中不能定义非静态的成员。由于类型的构造函数也是静态的,因此静态类型不能实例化。
关于静态方法可参考下节。
abstract class 抽象类
被“abstract”修饰的类就是抽象类,抽象类是一种介于类和接口之间的类型,定义为抽象类说明其有部分内容尚未实现,有待以后被继承被扩展。以下代码就定义了一个抽象类
public abstract class MyAbstractClass
{
public abstract int Sum(int a, int b);
public int Div(int a, int b)
{
return a / b;
}
}
在代码“public abstract class MyAbstractClass”中,关键字“abstract”就声明了该类型为抽象类;在代码“public abstract int Sum(int a, int b);”中,关键字“abstract”就声明该成员为抽象成员,抽象成员只能留个定义,不能有任何功能实现代码,因此在这里声明一下Sum方法就用分号结束了定义。
抽象类可以包含不抽象的方法,比如此处包含了一个完整的Div成员方法。。
抽象类不能实例化,对于类型“我的抽象类”,代码“MyAbstractClass instance = new MyAbstractClass( )”是错误的,抽象类必须派生出其他类型才能使用;而且派生的时候,所有的抽象成员必须强制被重写。由于抽象类必须被重载,因此抽象类不能是密封类,也就是说关键字“abstract”和“sealed”是相互排斥的。
以下代码就从抽象类“MyAbstractClass”派生新的类型
public class MyClassFromMyAbstractClass : MyAbstractClass
{
public override int Sum(int a, int b)
{
return a + b;
}
}
由于从抽象类派生新类型时,开发人员可能忘记抽象类中定义的抽象成员,此时VS.NET的C#代码编辑器提供帮助功能,这个和帮助生成实现接口的功能类型,如下图所示

当文本光标移动到方框处的“MyAbstractClass”,则左下角出现一个智能标签,鼠标点击这个智能标签会弹出一个菜单,点击菜单项目“实现抽象类“MyAbstractClass””就会自动生成以下代码。[袁永福版权所有]
public class MyClassFromMyAbstractClass : MyAbstractClass
{
public override int Sum(int a, int b)
{
throw new NotImplementedException();
}
}
这个时候开发人员就可以往重载的成员中添加功能代码了。
由于抽象类型不能实例化,因此必须借助它的派生类型才能使用,比如以下的代码
MyAbstractClass instance = new MyClassFromMyAbstractClass();
instance.Div(1, 2);
instance.Sum(3, 4);
当然派生类型可以独立使用,如以下代码
MyClassFromMyAbstractClass instance2 = new MyClassFromMyAbstractClass();
instance2.Div(1, 2);
instance2.Sum(3, 4);
sealed class 密封类
被关键字“sealed”修饰的类是密封类,密封类可以继承自其它类,但不能被继承,不能包含虚方法和抽象方法。以下代码就定义了一个密封类
public sealed class MySealedClass
{
public int Sum(int a, int b)
{
return a + b;
}
}
由于密封类不能被继承,不能被扩展,这可能会影响系统的扩展性,因此慎用,在实际中用得比较少。[袁永福版权所有]

转载于:https://blog.51cto.com/xdesigner/628962

[毕业生的商业软件开发之路]C#类型样式相关推荐

  1. [毕业生的商业软件开发之路]系列文章目录规划

    目前[毕业生的商业软件开发之路]系列文章规划出的目录如下,希望靠大家一起完善它,有什么意见欢迎跟帖. 第一章 课程背景 高校毕业生就业问题 高校毕业生就业方式 第二章初入职场 课程说明 关于企业培训 ...

  2. 【毕业生的商业软件开发之路】商业软件开发基础

    近期开始接触到在校学生.高校实习生和毕业生,在此说一下笔者对这些徘徊在职场门口的学生一些建议,希望能给这些初学者进入软件开发行业带来一些帮助,使得毕业生能更顺利的进入软件开发公司开始职场生涯,人生来一 ...

  3. [毕业生的商业软件开发之路]尽早暴露错误原则

    近期开始接触到在校学生.高校实习生和毕业生,在此说一下笔者对这些徘徊在职场门口的学生一些建议,希望能给这些初学者进入软件开发行业带来一些帮助,使得毕业生能更顺利的进入软件开发公司开始职场生涯,人生来一 ...

  4. [毕业生的商业软件开发之路]C#语法基础结构

    近期开始接触到在校学生.高校实习生和毕业生,在此说一下笔者对这些徘徊在职场门口的学生一些建议,希望能给这些初学者进入软件开发行业带来一些帮助,使得毕业生能更顺利的进入软件开发公司开始职场生涯,人生来一 ...

  5. 毕业生的商业软件开发之路 --- C#基本语法-C#代码模块逻辑框架

    C#基本语法 课程介绍 面向读者说明C#编程语言的基本语法,本章要求阅读者已经掌握了一种计算机高级编程语言,比如VB或C++等,理解变量.数组.条件判断.循环等编程知识.达到了国家计算机等级考试二级的 ...

  6. Go开发之路 -- 指针类型

    1. 普通类型,变量存的就是值,也叫值类型 2. 获取变量的地址,用&,比如: var a int, 获取a的地址:&a 3. 指针类型,变量存的是一个地址,这个地址存的才是值 4. ...

  7. 9个offer,12家公司,35场面试,从微软到谷歌,应届计算机毕业生的2012求职之路[对书籍加了注释]

    9个offer,12家公司,35场面试,从微软到谷歌,应届计算机毕业生的2012求职之路[对书籍加了注释] 引言:同样是求职,和前面一篇blog一样,看出了很大的差距,多花了些时间,把作者列举的书籍通 ...

  8. 从零开始的 React 组件开发之路 (一):表格篇

    React 下的表格狂想曲 0. 前言 欢迎大家阅读「从零开始的 React 组件开发之路」系列第一篇,表格篇.本系列的特色是从 需求分析.API 设计和代码设计 三个递进的过程中,由简到繁地开发一个 ...

  9. 千千万万的IT开发工程师路在何方?

    恭喜,你选择开发工程师作为自已的职业! 悲哀,你选择开发工程师作为自已的职业! 本文所指的开发工程师,仅指程序开发人员和以数字电路开发为主的电子工程师.当你选择计算机或者电子.自控等专业进入大学时,你 ...

最新文章

  1. 【考试认证专场】大牛带你全面掌握学习技巧,攻克考试难题(8.2-8.6精品课程限时特惠)...
  2. ORACLE同义词源库锁表导致目标库删除操作报ora 02055 02049 02063 06512
  3. 如何用杠铃策略,构建你的“反脆弱性”
  4. UVA - 11694 Gokigen Naname(dfs)
  5. android studio导出apk_Android 应用构建速度提升的十个小技巧
  6. SPOJ 962 Intergalactic Map (从A到B再到C的路线)
  7. idea菜单栏消失如何调整回来
  8. DPDK单生产者入队单消费者出队
  9. 企业的培训体系:145页企业培训年度规划和培训体系的建立
  10. mysql cpu高 重启无效_解决mysqlcpu高的问题
  11. 如何获取函数的变长参数(va_list, va_start, va_arg, va_end)
  12. 犀牛Rhinoceros 7 for Mac(三维建模软件)
  13. 最新html word 分页符,分页符 有什么用
  14. 使用Python查看并显示图像
  15. BZOJ4378[POI2015]Logistyka——树状数组
  16. 亲朋好友都能看懂的区块链
  17. 老友记台词学习笔记 SE01EP03(三)
  18. ios本地化_本地化101 iOS与Android
  19. 字节跳动2023届校招薪资盘点!
  20. 使用jsoup入门java爬虫 案例

热门文章

  1. 用 jQuery 的 AJAX 功能发现的一个错误/注意点:HTTP Error 411
  2. OSError: Could not find library geos_c or load any of its variants ['libgeos_c.so.1', 'libgeos_c.so
  3. (一)Android Studio 安装部署 华丽躲坑
  4. MFC中利用CFileDialog选择文件并读取文件所遇到的问题和解决方法
  5. Vmware linux 无法上网
  6. vim的简单使用以及一些常用的命令
  7. 《CCNA无线640-722认证考试指南》——导读
  8. phpcms中调用外部网站数据
  9. Maven实战:Maven生命周期
  10. 使用模块化编译缩小 apk 体积