ASP.NET.2.0.in.C.Sharp.2005.From.Novice.to.Professional的读书笔记[3]

原创 2006年06月25日 21:59:00

CHAPTER2   Learning the C# Language

这一章将对C#语言进行概述。论述的内容包括数据类型,操作方式,定义函数需要的代码,循环,特定逻辑.虽然你不需要去了解全部的细节,但这正是职业与业余的区别.对学习者的建议是,你可以不必要去记住这一章,可以当有需要的时候返回到这一章来.

The .NET Languages

使用C#代替VB.NET仅仅只是开发形式的变化,而而并不影响其他,同样你也可以使用第三方提供的语言,但需要记住的是.NET Framework里CLR只认识中间语言,而并不认识其他的语言.所以使用任何语言编写的程序,在被编译成中间语言之前,是无法被CLR运行的.

C# Language Basics

Case Sensitivity

有些语言是大小写敏感的,例如C,C#,JAVA,而VB.NET不是的,如果使用VB.NET的人在使用大小写敏感的语言时,如果不注意大小写敏感,则编译器的编译是不能通过的.C#的语言比较多的是小写.

Commenting

注释加强程序代码的可读性,他不会被编译器编译,C#提供了两种注释方法,第一种在"//"后写注释,"//"所在行之后的内容全部会被当作注释,第二种/*与*/之间的内容,他们之间的内容会被当作注释.

C#还有一种基于XML的注释,此格式与HTML的语言很相近,格式是
///<summary>
///............
///............
///</summary>

他们之间的内容会显示出来,做为对某个按钮的使用说明.

Line Termination

C#语言的任何一个语句是以";"结尾的,如果一行最后没有";",那么他会把下一行也算为这个语句,直到";"为止.

例如:
myValue=myValue1+myValue2+myValue3;
myValue=myValue1+myValue2+
        myValue3;
myValue=myValue1+
        myValue2+
        myValue3;
是一样的,他们代表的,执行的是同一个动作.

Block Strctures

C#的代码放在{}之间,{}之间的代码被看做是一个整体,{}里面还可以有{},而且{}是成对出现的,这好比是文章的开始"{"与文章的结束"}".

Variables and Data Types

任何语言都可以定义变量,变量用于存储相应的数据信息,使用C#定义变量时,首先要给变量命名,然后要赋予变量正确的类型,这些类型包括,文本,数据,时间,指针,类等等.例子 int errorCode 定义了一个名为errorCode的整数变量.

在解决不同语言的定义变量类型使用名称的不同这个问题上,微软提出了一个基础变量类型.

基础变量类型,VB变量类型,C#变量类型表如下:

Table 2-1.
Class Library Name                       VB Name         C# Name                  Contains
Byte                                       Byte            byte              An integer from 0 to 255.
Int16                                      Short           short             An integer from –32,768 to 32,767.
Int32                                      Integer         int               An integer from –2,147,483,648 to 2,147,483,647.
Int64                                      Long            long              An integer from about –9.2e18 to 9.2e18.
Single                                     Single          float             A single-precision floating point number                                                                              from approximately –3.4e38 to 3.4e38.
Double                                     Double          double            A double-precision floating point number from
                                                                             approximately –1.8e308 to 1.8e308.
Decimal                                    Decimal         decimal           A 128-bit fixed-point fractional number that
                                                                             supports up to 28 significant digits.
Char                                       Char            char              A single 16-bit Unicode character.
String                                     String          string            A variable-length series of Unicode characters.
Boolean                                    Boolean         bool              A true or false value.
DateTime                                   Date            *                 Represents any date and time from 12:00:00 AM,
                                                                             January 1 of the year 1 in the Gregorian calendar,
                                                                             to 11:59:59 PM, December 31 of the year 9999.
                                                                             Time values can resolve values to 100 nanosecond
                                                                             increments. Internally, this data type is stored as                                                                              a 64-bit integer.
TimeSpan                                   *               *                 Represents a period of time, as in ten seconds or
                                                                             three days. The smallest possible interval is 1 tick
                                                                             (100 nanoseconds).
Object                                    Object           object            The ultimate base class of all .NET types. Can
                                                                             contain any data type or object.
* If the language does not provide an alias for a given type, you can just use the .NET class name.

*代表,这种类型在此语言中没有定义,但这种类型是实际存在的,当然也是可以使用的,例如C#要使用TimeSpan类型,可以这样来定义,
TimeSpan mytime;/*我想,要使用TimeSpan类型,必须得加上一个前缀,例如System.Time.TimeSpan,这个不一定正确,只是打个比方*/
其他存在的数据类型也可以这样定义.

Assignment and Initializers

一旦定义了变量,就要对变量进行赋值了,例如
int errorcode;
errorcode = 10;
关于变量定义的方式,可以查看C语言的定义以及赋值方式.但有一点需要注意,例如:
decimal myDecimal = 14.5;

decimal表示的是数据范围是,大约是1.0*10^-28到7.9*10^28,decimal的位数是128,double的位数是64,那么为什么decimal没有double表示的范围大呢,这是因为浮点数分两部分存储:尾数和阶码(指数部分),表示尾数的位数多则精度高,表示指数的位数多则范围大,double虽然64位,但其精度低,故其可以表示的范围大,decimal虽然是128位,但由于其用了较多的位来表示其精度,只好牺牲表示范围了.在微软的帮助书中这样写到,decimal 关键字表示 128 位数据类型。同浮点型相比,decimal 类型具有更高的精度和更小的范围,这使它适合于财务和货币计算。

上面这个例子,赋值的时候会自动将myDecial定义为double类型,如果要避免这种情况的发生,则定义时要加上decimal myDecimal = 14.5M;
为什么定义的decimal类型变量在赋值的时候会被转换成double类型?有知道的高手还望指教一下!谢谢!

Strings and Escaped Characters

"/"和一些字符合在一起,就可以构成新的意思,所以"/"也被称为转义字符,*看来以后还是要具体的查查转义字符怎么使用*,例如

path = "c://myapp//myfiles"; 它和 path = @"c:/myapp/myfiles"; 的意思是一样的,因此,@字符的意思为忽略@之后的"/"字符.

Arrays

数组,这个是许多语言都有的定义方式,他可以定义一系列相同类型的数据,例如int类型,数组的起始数字是0.例子:

string[] stringArray = new string[4];

此处定义了1个字符串数组,数组的名字是stringArray,数组的成员有4个(而不是5个,这个问题很容易混淆),访问数组的方式是,例如,访问数组成员的第一个是stringArray[0],第二个是stringArray[1],依次类推.

当然还可以定义一维数组,二维数组,三维数组.他们都遵循上面的规则.

在数组被定义,但是没被初始化的时候,他们会被默认为0或者false.

以二维数组为例子,定义一个二维数组.应该如下定义:

int[4,2] intArray = {{1,2},{3,4},{5,6},{7,8}};/*不一定要遵循这个赋值规则,这是两个值一起赋值,也可以单个单个                                                的赋值*/
上面的数组,可以使用理解EXCEL表格来理解,int[4,2],其中4代表行数,2代表列数,所以这个数列定义了8个整型,第一个是intArray[0,0],最后一个是intArray[3,1].

The Arraylist

这对我而言是个新东西,我说说我的理解吧,这个可以说是一个比较特殊的数组类型,你可以使用他来定义一个数组,但在没有转换他之前你是无法使用他的,因为他并没有具体的类型,他也许是int,也许是char,也许是string.你可以把你想要的数据放进去,等需要使用的时候再把他转换一下提出来,似乎我表达不清楚,那么我来举个例子吧.

ArrayList dynamiclist = new ArrayList();
dynamiclist.Add("one");
dynamiclist.Add("one");
dynamiclist.Add("one");

这样dynamiclist数组里面就有了三个,这三个都是one;
string item = Convert.ToString(dynamiclist[0]);
int    myvalue = Convert.ToInt(dynamiclist[1]);/*ToInt是我猜测的,我并不知道有没有这个方法,我是类推的*/
bool   myboolean = Convert.ToBool(dynamiclist[2]);/*ToBool也是猜的*/

我想,除了第一个是one字符串之外,第二个是数字,第三个是bool数.

因此,这个数组打破了一个数组内定义的数据必须是相同类型的这样一个规定,你可以往ArrayList型数组里放入数字,字符,字符串等.我想这就是这个数组类型存在的必要.

Enumerations

枚举,和类有点相似,但有不一样,类有方法,而他却没有,例如;

enum UserType
{
   Admin,
   Guest,
   Invalid
}/*这几个会被自动赋值,Admin被赋值0,Guest为1,Invalid为2,需要注意的是,他们之间是",",而不是";"*/

UserType newUserType = UserType.Admin;

也可以自主赋值,只需要在后面加上=和数字即可,例如 Admin = 80;

ASP.NET.2.0.in.C.Sharp.2005.From.Novice.to.Professional的读书笔记[1]

我爱北京天安门 天安门上太阳升 伟大领袖毛主席 指引我们向前进 我是个ASP.NET 2.0的初学者,最近在看一本名为的书,是全英文版本的,刚看完第一章就有股冲...
  • qiuqiu1140
  • qiuqiu1140
  • 2006年06月23日 16:23
  • 830

ASP.NET.2.0.in.C.Sharp.2005.From.Novice.to.Professional的读书笔记[2]

The .NET Framework.NET Framework 可以说是许多技术的大合集:1..NET语言的大合集,包含了,C#,VB.NET(将VB6从结构化语言转变成了面向对象的语言),JScr...
  • qiuqiu1140
  • qiuqiu1140
  • 2006年06月24日 22:22
  • 858

ASP.NET.2.0.in.C.Sharp.2005.From.Novice.to.Professional的读书笔记[7]

Advanced Class Programming面向对象的程序设计的魅力来源是类之间的关系.要创造一个类,你所需要的是在类中定义合适的变量和合适的属性.在ASP.NET程序中,你可以发现一些特殊的...
  • qiuqiu1140
  • qiuqiu1140
  • 2006年07月01日 21:44
  • 586

ASP.NET.2.0.in.C.Sharp.2005.From.Novice.to.Professional的读书笔记[9]

CHAPTER 5  Web Form FundamentalsASP.NET介绍了创建网页的值得注意的一种新模式.在老模式的ASP开发中,编程者在开发一个动态页面之前,必须精通HTML的标志的细节和...
  • qiuqiu1140
  • qiuqiu1140
  • 2006年07月05日 16:13
  • 1481

ASP.NET.2.0.in.C.Sharp.2005.From.Novice.to.Professional的读书笔记[6]

Value Types and Reference Types简单得数据类型属于Value Types,类属于Reference Types.在许多地方两者得区别不是很大,在应用上也极其相近,但是在三...
  • qiuqiu1140
  • qiuqiu1140
  • 2006年06月30日 17:57
  • 824

ASP.NET.2.0.in.C.Sharp.2005.From.Novice.to.Professional的读书笔记[5]

CHAPTER3 Types,Objects,and NamespacesThe Basics About Classes类之间是依据三个重要的因素相互联系的.属性:你可以通过属性访问一个类的数据,有...
  • qiuqiu1140
  • qiuqiu1140
  • 2006年06月28日 19:18
  • 691

ASP.NET.2.0.in.C.Sharp.2005.From.Novice.to.Professional的读书笔记[8]

CHAPTER 4    Introducing Visual Studio 2005在.NET出现之前,ASP的开发者非常喜欢使用简单的文本编辑工具编辑网页.其他得选择也还是又得,但是每种都又着自己...
  • qiuqiu1140
  • qiuqiu1140
  • 2006年07月03日 18:22
  • 779

ASP.NET.2.0.in.C.Sharp.2005.From.Novice.to.Professional的读书笔记[4]

Variable Operations变量的操作,数字操作上可以以下表为例。Table 2-2. Arithmetic OperationsOperator                     D...
  • qiuqiu1140
  • qiuqiu1140
  • 2006年06月26日 14:59
  • 647

《Linux设备驱动开发详解》读书笔记(3)

第一章,    并发控制 Linux2.6.35之后取消了中断的嵌套。 读写乱序。可以通过barrier()来防止编译乱序,volatile防止读优化,DMB /DSB /ISB防止运行乱序。Li...
  • luchunpeng
  • luchunpeng
  • 2017年01月09日 22:37
  • 131

《Programming in Lua 3》读书笔记(十)

日期:2014.7.11 Part Ⅱ  Metatables and Metamethods Lua中不能直接对table进行相加、比较等操作。除非使用元表(Metatables)。元...
  • u011894560
  • u011894560
  • 2014年07月13日 16:01
  • 883
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:ASP.NET.2.0.in.C.Sharp.2005.From.Novice.to.Professional的读书笔记[3]
举报原因:
原因补充:

(最多只允许输入30个字)