分享
 
 
 

《Web Service 编程 --用C#.NET 开发网络服务》北京希望出版社 我的学习笔记(第二章)(也就是书上抄了一写东西而已)

王朝c#·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

《Web Service 编程 --用C#.NET 开发网络服务》-北京希望出版社

第二章 C# 基本语法

2.1 如何编译C#语言

2.1.1 中间语言

2.1.2 编译参数

CSC.EXE 把C#程序代码编译成IL文件时有很多开关选项

@ csc @rsp1.rsp

rsp.1.rsp的内容为

/target:exe /out:sample.exe sample.cs

@用来指定响应文件,响应文件是一种包含了许多编译选项的rsp 后缀的文件,在开始用# 做注释可以指定多个响应文件

如: csc @rsp1.rsp @rsp2.rsp

/?,/help 帮助

/addmodule 把模块加入文件中

csc /addmodule:module1.dll;module2.dll my.cs

/baseaddress 指定编译成为DLL 文件时,DLL 的载入首地址

csc/baseaddress:0x1111000 /target:library my.cs

可以是十进制,八进制,十六进制

/bugreport 把错误放在一个文件中

如:csc /bugreport:bugs.txt my.cs

/checked

/codepage

/debug 该选项会创建一个.pdb文件

如:csc /dubug+ my.cs

/define 可以用定义原文件中没有定义的编译变量

如:csc /define:fine my.cs

/doc 会把原代码中的注释编译成为一个XML 文件

csc /doc:my.xml my.cs

/fullpaths

/incremental

/linkresource

/main 指定MAIN 的入口

如:csc my1.cs my3.cs /main:my1

/nologo

/nooutput 不输出任何文件,但是可以看到编译信息

如:csc /nooutput my.cs

/nostdlib

/nowarn

/optmize

/out 指定输出文件

如:csc /out:h.exe hee.cs

/recurse csc /target:library /out:dir2.dll /recurse:dir1\dir2\*.cs

/reference csc /r:system.dll;myexec.exe;myblib.dll my.cs 添加DLL

/target

● /target:exe csc /target:exe my.cs

● /target:library csc /target:library my.cs

● /target:winexe csc /target:winexe my.cs

● /target:module csc /target:module my.cs

resource 同linkresource功能相反,他是把.NET 资源嵌入到输出文件中

/unsafe csc/unsafe my.cs

/warn csc /warn:0 my.cs

0: 关闭警告

1: 只显示严重警告

2: 级别为1的和不严重的

3: 级别为2的和不严重的

4: 级别为3的和不严重的

/warnaserror csc /warnaserror myj.cs 把警告当错误

/win32icon csc /win32icon:myicon.ico mycs 插入图标文件

/win32res 插入一个WIN32资源到输出文件中 csc /win32res:winrf.res mt.cs

2.2 值类型

C# 值类型分三种

● 简单类型 (Simple types)

● 结构类型 (Struck types)

● 枚举类型 (Enumeration types)

2.2.1

简单类型 (Simple types)

分为布尔型和数值型,C# 的布尔型和数值型是严格区分的,布尔型只有true 和false 两种取值,不能和整数转换

数值型分为:整值(sbyte,byte,short,ushort,int,uint,long,ulong,char),浮点(float,double), decimal 三种,

2.2.2

结构类型 (Struck types)

如下代码:

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

struct Student{

public string names;

public uint ages;

public float averagescore;

public struct address{

public string city;

public string street;

uint NO;

}

}

Student1;

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

可以如下访问:

Student1.address.city="beijing";

2.2.3

枚举类型 (Enumeration types)

enum Color{

Red,Blue,Green,White,Black

};

按照系统默认:第一个为0 依次加1,也可按照自己需要定值

2.3 引用类型

C# 有以下的引用类型

● 对象类型

● 类类型

● 接口

● 代表元

● 字符串类型

● 数组

2.3.1

对象类型

如:object etcObject=1243;

2.3.2

类类型

一个类类型包含数据成员,函数成员,嵌套类型,数据成员是常量,静态字段和事件。函数成员包括方法,属性,索引,操作浮,构造函数,析构函数。 C# 只允许单继承,但是可以派生自多个接口

2.3.3 接口

2.3.4 代表(Delegate)

如下:

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

using System;

delegate int TheDelegate(); //声明一个代表

public class TheClass

{

public int InstanceMethod()

{

Console.Write("Call the instance method");

return 0;

}

static public int StaticMethod()

{

Console.Write("Call the Static method");

return 0;

}

}

public class Test{

static public void Main(){

TheClass p=new TheClass(); //将代表指向非静态的方法 InstanceMethod

TheDelegate d=new TheDelegate(p.InstanceMethod);//调用非静态方法

d();//将代表指向的静态的方法StaticMethod

d=new TheDelegate(TheClass.StaticMethod); //调用静态方法

d();

}

}

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

2.3.5 字符串类型

2.3.6 数组

string[] etcStr={"A","B","C"}; = etcStr[0]="A";etcStr[1]="B";etcStr[2]="C";

int[,] arr={{0,1},{2,3},{4,5}} =

arr[0,0]=0;arr[0,1]=1;

arr[1,0]=2;arr[1,1]=3;

arr[2,0]=4;arr[2,2]=5;

int nVar=5;

int[] arrToo=new int[nVar]; 也可以!

2.4 装箱和折箱

2.2.1 装箱

装箱就是把值类型隐式的转化为对象类型(Object)

int Number=10; 在栈中

object objNumber=number; 在堆中

装箱后Number和objNumber没有然后联系!

2.4.2 折箱

将一个对象显示的转换为一个值类型!

int NOTobjectNumber=(int)objNumber;

2.5 常量和变量

2.5.1 变量

和C/C++ 不同的是可以用@ 来说明一个关键字也是一个变量!C# 没有全局变量!

2.5.2 常量

可以是然后一种值类型和引用类型!

2.6 流程控制

2.6.1 条件语句

1。 IF 语句

2。 switch 语句

在C# 中,如果没有碰到break,C#不会自动从一个CASE 遍历到下一个CASE,如果没有break 或goto,编译器会报错!和C/C++不同的还有一点是 switch 支持字符串来做为表达式。C# 的switch 语句里可以是string 类型!

2.6.2 循环语句

C# 中引入了VB 里的foreach

如下:

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

using System;

using System.Collections;

namespace UseForeach

{

/// <summary>

/// Class1 的摘要说明。

/// </summary>

class Test

{

static void WriteList(ArrayList list)

{

foreach(object o in list)

{

int i=(int)o;

Console.Write(o);

Console.WriteLine(++i);

}

}

static void Main()

{

ArrayList list=new ArrayList();

for(int i=0;i<10;i++)

list.Add(i);

WriteList(list);

}

}

}

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

2.6.3 条件编译

预处理方法和条件属性

1 预处理方法

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

using System;

public class SquareSample

{

public void CaleSquare(int nSideLength,out int nSquared)

{

nSquared=nSideLength*nSideLength;

}

public int CalcSquare(int nSideLength)

{

return nSideLength*nSideLength;

}

}

class SquareApp

{

public static void Main()

{

SquareSample sq=new SquareSample();

int nSquared=0;

#if CALC_W_OUT_PARAM

sq.CalcSquare(20.out nSquared);

#else

nSquared=sq.CalcSquare(15);

#endif

Console.WriteLine(nSquared.ToString());

}

}

//由于没有定义CALC_W_OUT_PARAM,所以编译的时候要用如下的命令

//csc /define:CALC_W_OUT_PARAM define.cs

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

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

#define DEBUG

#define RELEASE

#define DEMOVERSION

#if DEMOVERSION &&!DEBUG

#warning You are Building a demo version

#endif

#if DEBUG && DEMOVERSION

#error You cannot build a debug demoversion

#endif

using System;

class Demo

{

public static void Main()

{

Console.Write("Demo Application");

}

}

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

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

//#define DEBUG

#define RELEASE

#define DEMOVERSION

#if DEBUG

#undef DEMOVERSION

#endif

using System;

class Demo

{

public static void Main()

{

#if DEBUG

Console.WriteLine("Debug version");

#elif RELEASE &&!DEMOVERSINO

Console.WriteLine("Full release version");

#else

Console.WriteLine("DEMO VERSION");

#endif

}

}

(我对结果不了解)

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

上面就是几种预处理方法的代码

2.条件属性

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

#define DEBUG

using System;

class Info

{

[conditional("DEBUG")]

public static void Trace(string strMessage)

{

Console.WriteLine(strMessage);

}

[conditional("DEBUG")]

public static void TraceX(string strFormat,params object&#;list)

{

Console.WriteLine(stringFormat,list);

}

}

class TestConditional

{

public static void Main()

{

Info.Trace("Cool");

Info.TraceX("{0{ {1} {2}","C","U",2001);

}

}

// 有错误?

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

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有