C#从零开始
wwbb2008
这个作者很懒,什么都没留下…
展开
-
变量
变量的初始化是C#强调安全性的另一个例子。简单地说,C#编译器需要用某个初始值对变量进行初始化,之后才能在操作中引用该变量。大多数现代编译器把没有初始化标记为警告,但C#编译器把它当作错误来看待。这就可以防止我们无意中从其他程序遗留下来的内存中获取垃圾值。C#有两个方法可确保变量在使用前进行了初始化:● 变量是类或结构中的字段,如果没有显式初始化,创建这些变量时,其值就默认是0(类和结构在后面讨论原创 2012-02-03 11:12:10 · 438 阅读 · 0 评论 -
匿名类型
var关键字,用于表示隐式类型化的变量。var与new关键字一起使用时,可以创建匿名类型。匿名类型只是一个继承了Object的、没有名称的类。该类的定义从初始化器中推断,类似于隐式类型化的变量。var captain = new {FirstName = "James", MiddleName = "T", LastName = "Kirk"};这会生成一个包含FirstName、Midd翻译 2012-02-19 14:11:22 · 506 阅读 · 0 评论 -
结构
结构与类的区别是它们在内存中的存储方式(类是存储在堆(heap)上的引用类型,而结构是存储在堆栈(stack)上的值类型)、访问方式和一些特征(如结构不支持继承)。较小的数据类型使用结构可提高性能。但在语法上,结构与类非常相似,主要的区别是使用关键字struct代替class来声明结构。虽然结构是值类型,但在语法上常常可以把它们当作类来处理。为结构定义函数与为类定义函数完全相同. str翻译 2012-02-19 15:29:42 · 399 阅读 · 0 评论 -
Object类
所有的.NET类都派生于System.Object。实际上,如果在定义类时没有指定基类,编译器就会自动假定这个类派生于Object。(对于结构,这个派生是间接的:结构总是派生于System.ValueType,System.ValueType派生于System.Object)除了自己定义的方法和属性外,还可以访问为Object定义的许多公共或受保护的成员方法。这些方法可以用于自己定义的所有其他原创 2012-02-21 10:00:36 · 1772 阅读 · 0 评论 -
继承
学习了这么久,一直都是在学关于面向对象语言。面向对象的三大特性是什么呢?很简单,学过的人都知道,就是“封装,继承,多态”,可是这三大特性有多少人能够真正明白呢。其实我学了这么久也就知道些简单的概念,下面我在回顾下,把三大特性重新学习下。先学习下继承吧。不多说了,下面就开始学习去了。前面学习的,所有的类最终都派生于System.Object类,但并没有说明如何创建继承类的层次结构。下面就给好好学原创 2012-02-21 11:12:40 · 555 阅读 · 0 评论 -
定义和实现接口
前面说过了接口,但都是一些概念的东西,没有些实际应用,下面就学习下接口的使用吧。下面开发一个遵循接口继承规范的小例子来说明如何定义和使用接口。这个例子建立在银行账户的基础上。假定编写代码,最终允许在银行账户之间进行计算机转账业务。许多公司可以实现银行账户,但它们都是彼此赞同表示银行账户的所有类都实现接口IBankAccount。该接口包含一个用于存取款的方法和一个返回余额的属性。这个接口还允许原创 2012-03-23 16:49:16 · 767 阅读 · 0 评论 -
修饰符
前面已经遇到许多所谓的修饰符,即应用于类型或成员的关键字。修饰符可以指定方法的可见性,例如public或private,还可以指定一项的本质,例如方法是virtual或abstract。C#有许多访问修饰符1、可见性修饰符修 饰 符应 用 于说 明public所有的类型或成员任何代码均可以翻译 2012-03-20 18:00:48 · 426 阅读 · 0 评论 -
接口
如果一个类派生于一个接口,它就会执行某些函数。并不是所有的面向对象语言都支持接口。尽管在概念上C#接口类似于COM接口,但它们是不同的,底层的结构不同,例如,C#接口并不派生于IUnknown。C#接口根据.NET函数提供了一个契约。与COM接口不同,C#接口不代表任何类型的二进制标准。 下面列出Microsoft预定义的一个接口System.IDisposable的完整定义。IDis翻译 2012-03-21 13:36:54 · 603 阅读 · 0 评论 -
函数成员
今天搞了一个下午的oracle,晕死了。装是是好了,就是连接还是老出错。烦死了,算了,明天继续搞了,先休息下继续学习C#了,今天多学点理论知识。函数成员 函数成员是一些包含可执行语句的成员。函数成员总是类型的成员,并且不能是名称空间的成员。其中C#下面五种函数成员: 1、构造函数; 2、方法; 3、属性原创 2013-10-24 17:28:29 · 1190 阅读 · 0 评论 -
C#中的format
一直去写代码,可总觉得自己编码水平没什么大的突破,觉得有点悲催了,最近有种想法,从最简单的开始重新来看。正确早点成就自己。废话不多说了,今天就开始。今天就学习下最简单的格式化字符串了,其实格式化每个人都会的了,可是很多东西也不是都能记住的,下面就总结下简单的格式化代码了,其实也是网上看看了。 C#格式化方式一:string result = d.ToString("#,##0.00原创 2013-10-18 16:58:26 · 1223 阅读 · 0 评论 -
ref参数和out参数
参数对于每个学习编程的人都很清楚,在任何程序中都不可能没有参数,下面我就说说一个特殊的参数类型,其实这个也不算什么特殊参数了,在c#中已经没有像C中那样的指针的概念了,但是有的时候有些时候要写特殊的处理,其实c#中并不是完完全全放弃这个概念的,下面就写下这类特殊的参数。引用参数ref当一个参数带有ref修饰符时候这个参数就是一个引用参数。引用参数本身并不创建新的存储空间的。引用参数指向原创 2013-10-19 23:20:10 · 5550 阅读 · 0 评论 -
C#数据类型转换(1--隐式转换)
数据类型的转换对于编程人员来说是一个非常常见的知识,相信每个程序员都会知道,而且经常使用,同时数据转换对于编程来说也是一个非常重要的知识点,今天就好好学习下吧!一、隐式转换:同一性转换,隐式数值转换, 隐式枚举转换,隐式引用转换,包装转换,隐式常数表达式转换,用户自定义隐式转换(PS:微软C#文档上说的,具体类型还是一起学习吧,其实有些概念我也不清楚了)同一性转换:把任何类型转换为统一的类原创 2013-10-20 22:49:57 · 978 阅读 · 0 评论 -
C#数据类型转换(2--显式转换)
继续昨天的数据类型转换,今天继续学习显式转换;很清楚显式转换就是和隐式转换相反的转换呗(ps:这是字面上的意思了,其实这种说法不准确了,没有什么相反不相反的说法了),不多说了,继续学习~~显式转换:各种类型的转换属于显式转换的也挺多的;下面各种类型转换属于显式转换所有隐式转换(这一点我也不是很清楚,还待继续学习);显式数值转换;显式枚举转换;显式引用转换;解包转换(unboxing);用户原创 2013-10-21 16:29:19 · 1065 阅读 · 0 评论 -
析构函数
来岛国已经45天了,感觉一切都没有想象的那么好,看来还是得多努力了,从头开始吧!今天废话不多说了,开始学习:今天学习下析构函数吧,析构函数(destructor) 与构造函数相反,当对象脱离其作用域时(例如对象所在的函数已调用完毕),系统自动执行析构函数。析构函数往往用来做“清理善后” 的工作(例如在建立对象时用new开辟了一片内存空间,应在退出前在析构函数中用delete释放)。备注原创 2013-10-28 09:11:19 · 857 阅读 · 1 评论 -
部分类/静态类
部分类 partial关键字允许把类、结构或接口放在多个文件中。一般情况下,一个类是存储在单个文件中的,但有的时候,多个开发人员需要访问同一个类,或者某种类型的代码生成器生成了一个类的某部分,所以把类放在多个文件中是有用的。partial关键字的用法是:把partial放在class、struct或interface关键字的前面。//BigClassPart1.cspartial翻译 2012-02-20 10:14:38 · 8168 阅读 · 0 评论 -
类成员
类中的数据和函数称为类的成员。除了这些成员外,类还可以包含嵌套的类型(例如其他类)。类中的所有成员都可以声明为public(此时可以在类的外部直接访问它们)或private(此时,它们只能由类中的其他代码来访问)。C#中protected(表示成员仅能由该成员所在的类及其派生类访问)数据成员数据成员包含了类的数据-- 字段、常量和事件。数据成员可以是静态数据(与整个类相关)或实例数据(类的翻译 2012-02-17 15:54:07 · 3137 阅读 · 0 评论 -
从零开始
虽然在公司做了一年多的.NET开发,不过总觉得自己的技术没什么长进。所以我打算从零开始学习一下基础知识,从新给自己所学所做的系统化一下。不多说了,今天就开始我的第一天重新学习吧。从零开始的话,那我就从控制台开始吧! using System;using System.Text;namespace C_Sharp{ class Program {原创 2012-02-03 10:30:18 · 364 阅读 · 0 评论 -
数据类型
值类型和引用类型在开始学习C#中的数据类型之前,理解C#把数据类型分为两种是非常重要的,这个问题经常会在一些面试题中出现。所以要理解清楚;从概念上看,其区别是值类型直接存储其值,而引用类型存储对值的引用。值类型默认分配在栈上,但可以通过装箱操作将值类型数据复制到堆上,但引用类型仅能被clr分配到堆中。引用类型的数据保存在堆中,但引用地址保存在栈上。注意区分某个类型是值类型还是引原创 2012-02-03 11:55:43 · 411 阅读 · 0 评论 -
枚举
枚举是用户定义的整数类型,在声明一个枚举时,要指定该枚举可以包含的一组可接受的实例值。不仅如此,还可以给值指定易于记忆的名称。 public enum TimeOfDay{Morning = 0,Afternoon = 1,Evening = 2} class EnumExample{public static int Main(){WriteG原创 2012-02-07 13:42:06 · 387 阅读 · 0 评论 -
命名空间
命名空间提供了一种组织相关类和其他类型的方式。与文件或组件不同,命名空间是一种逻辑组合,而不是物理组合。在C#文件中定义类时,可以把它包括在命名空间定义中。以后,在定义另一个类,在另一个文件中执行相关操作时,就可以在同一个命名空间中包含它,创建一个逻辑组合,告诉使用类的其他开发人员:这两个类是如何相关的以及如何使用它们namespace CustomerPhoneBookApp{usi原创 2012-02-08 10:38:55 · 456 阅读 · 0 评论 -
控制程序流
控制程序流的语句,它们不是按代码在程序中的排列位置顺序执行的条件语句:常见的条件语句有下面几种。1. if语句对于条件分支,C#继承了C和C++的if...else结构。对于用过程语言编程的人来说,其语法是非常直观的:if (condition) {statement(s)}else {statement(s)} 2. switch语句w原创 2012-02-03 15:38:00 · 448 阅读 · 0 评论 -
数组(一维数组)
在声明C#数组时,要在各个元素的变量类型后面加上一组方括号,(注意数组中的所有元素必须有相同的数据类型)注意:Visual Basic用户注意,C#中的数组使用方括号,而不是圆括号。C++用户很熟悉方括号,但应仔细查看这里给出的代码,因为声明数组变量的C#语法与C++语法并不相同。例如,int表示一个整数,而int[]表示一个整型数组:int[] integers;要初始化特定原创 2012-02-08 10:13:29 · 467 阅读 · 0 评论 -
Main()方法
C#程序是从Main()方法开始执行的。这个方法必须是类或结构的静态方法,并且其返回类型只能是void或int。虽然显式指定public修饰符是很常见的,因为按照定义,必须在程序外部调用该方法,但我们给该方法指定什么访问级别并不重要,即使把该方法标记为private,它也可以运行。多个Main()方法:编译C#控制台或Windows应用程序时,默认情况下,编译器会在类中查找与上述签名匹原创 2012-02-09 16:09:21 · 1048 阅读 · 0 评论 -
控制台输入/输出
要从控制台窗口中读取一行文本,可以使用Console.ReadLine()方法。它会从控制台窗口中读取一个输入流(在用户按下回车键时停止),并返回输入的字符串。写入控制台也有两个对应的方法:● Console. Write()方法将指定的值写入控制台窗口。● Console.WriteLine()方法类似,但在输出结果的最后添加一个换行符。所有预定义类型(包括object) 都有这原创 2012-02-10 10:40:34 · 1239 阅读 · 0 评论 -
C#预处理器指令
常用关键字外,C#还有许多名为"预处理器指令"的命令。这些命令从来不会转化为可执行代码中的命令,但会影响编译过程的各个方面。例如,使用预处理器指令可以禁止编译器编译代码的某一部分。如果计划发布两个版本的代码,即基本版本和有更多功能的企业版本,就可以使用这些预处理器指令。在编译软件的基本版本时,使用预处理器指令还可以禁止编译器编译与额外功能相关的代码。另外,在编写提供调试信息的代码时,也可以使用预处原创 2012-02-10 11:36:03 · 1604 阅读 · 0 评论 -
实现继承
前面文章学习了继承的一些基本概念,下面就说说继承的具体实现。如果要声明一个类派生于另一个类,可以使用下面的语法:class MyDerivedClass : MyBaseClass{//函数和数据成员等}注意:注意C#不支持私有继承,因此基类名上没有public或private限定符。支持私有继承会大大增加语言的复杂性。如果类(或结构)也派生于接口,则用逗号分隔开基原创 2012-02-21 19:46:51 · 553 阅读 · 0 评论 -
C#编程规则
用于标识符的规则 标示符是给变量、用户定义的类型(例如类和结构)和这些类型的成员制定的名称。标示符区分大小写。确定在C#使用标示符有两个规则:● 它们必须以一个字母或下划线开头,但可以包含数字字符;● 不能把C#关键字用作标识符。C#包含保留关键字abstractdoinProtectedtrue翻译 2012-02-15 09:49:40 · 658 阅读 · 0 评论 -
只读字段
常量(const)的概念就是一个包含不能修改的值的变量,常量是C#与大多数编程语言共有的。但是,常量不必满足所有的要求。有时可能需要一些变量,其值不应改变,但在运行之前其值是未知的。C#为这种情形提供了另一个类型的变量:只读字段(readonly)。readonly关键字比const灵活得多,允许把一个字段设置为常量,但可以执行一些运算,以确定它的初始值。其规则是可以在构造函数中给只读字段赋值原创 2012-02-19 11:54:53 · 634 阅读 · 0 评论 -
类和结构
做了这么久,虽然说做点东西没什么问题,可是一些概念的东西有时候还是有点模糊。虽然有人说最重要的还是实践,不过我觉得实践固然很重要,不过对于理论的东西也不能轻视的。毕竟理论是可以指导实践的。理论的东西在有的时候还是能发挥一定的作用的。前面也说了点基础的东西,这边就再写点了。今天就写点关于“类和结构”的东西吧。类和结构 首先,类和结构实际上都是创建对象的模板,每个对象都包含数据,原创 2012-02-17 11:59:18 · 461 阅读 · 0 评论 -
typeof操作符,sizeof操作符
昨天没有好好学习技术,哎!罪过啊,今天继续吧,一定要补上哦。今天先学学一个操作符吧对于一个类型,typeof操作符被用来获得System.Type对象,格式:typeof (type)必须是具体的类名、类型名称等,不可以是变量名称;对于候选类型,typeof-expression 的结果是System.Type对象class Test{ static void Main() {原创 2013-10-27 23:48:28 · 1461 阅读 · 0 评论