王朝网络
分享
 
 
 

走进C#(我的C#学习之旅) 之四(3)

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

怎么样?

答案是这样的

s1 is A string

s2 is A string

s1 is now Anothing string

s2 is now string

看到这个结果大家感觉怎么样!我是很感到意外的。因为根据原来的C实现字符串的方式,

在这里面作为一个指针来说,s1与s2应该指向相同的地址。

另外对于字符串处理还有另一个问题,如下例:

要构建如下一个串:"C:\PROGRAM FILE\WOM",我想大家明白我的意思了吧!

就是说在这里有 \ 但是 \ 是做为转义字符来用的。

(嗯,很简单)这样就行了呀:"C:\\PROGRAM FILE\\WOM",完全正确。而C#又提供了另一

种方式来解决这样的问题。其实是引入了一个@:

上面的可以这样写 string a=@"C:\PROGRAM FILE\WOM",这样C#会把@后的所有字符都做为

所来的形式来处理,并且他还包含换行符。

好了,关于C#最基本的数据类型就是这些了!(噢,好像少了点什么,对对,我下面就要说

了!)

上面是最基本的数据类型,下面我们来谈谈由这些基本的数据类型所构民的复全数据类型。

对于复合的数据类型,还是分两类来简述。

首先要说的还是值类型。在C#提供了两种复合的值类型,结构与枚举。

对于这两种类型大家是不是很熟悉呀?但是大家不要大意,在C#中这两种类型已经有了不小

的变化。

还是看个例子呀,还是例子比较能说明问题。

定义了如下的一个结构:

public struct Subscriber

{

public long lngSubscriberID;

public string strFirstName;

public string strMiddleName;

public string strLastName;

public decimal decBalance;

}

是不是和原来的结构有了很大的不同!在C#中结构其实就是一个特殊的类。

再看一下结构的使用:

Subscriber Subscriber1;

Subscriber Subscriber2;

Subscriber1=new Subscriber();

Subscriber1.strFilstName="John";

Subscriber1.strMiddleName="Q";

Subscriber1.strLastName="Public";

Subscriber1.decBalance=100;

Subscriber2=Subscriber1;

这里定义了两个结构:Subscriber1,Subscriber2。

然后用new运算符,对Subscriber1进行了初始化。关于初始化在这里多说一句。对于结构可

以不用new运算符来进行始化。因为在定义的同时就已经进行了一次初始化,所有字段的默

认值为0。但是这方式还有一个弊端,那就是没办法进行两个结构变量的复制。

再下面的代码就是实现了对新结构的赋值。而最后一行,就是我所说的结构间的复制。

那么结构有什么好处呢。我想最主要的一点就是体现在函数的传递中,可以把多个变量打到

一个结构变量中进行传递。

前面说过了,结构是一个特殊的类,他们俩最主要的不同就是结构不支持继承。

好了,说了这么多,下面来看看枚举。

还是通过一个例子来看看枚举。

public enum TimeOfDay

{

Morning=0,

Afternoon=1,

Evening=2

}

class EnumExample

{

public static int Main()

{

WriteGreeting(TimeOfDay.Morning);

return 0;

}

static void WriteGreeting(TimeOfDay timeOfDay)

{

switch(timeOfDay)

{

case TimeOfDay.Morning:

Console.WriteLine("Good morning!");

break;

case TimeOfDay.Afternoon:

Console.WriteLine("Good afternoon!");

break;

case TimeOfDay.Evening:

Console.WriteLine("Good evening!");

break;

default:

Console.WriteLine("Helo!");

break;

}

}

}

对于这个枚举我想大家一目了然了吧!对于枚举我私人认为呀,就是有点像常数,都是用名

字来打替数据吗!

对于复合的值类型就说到这,下面再看看复合的引用类型(数组、类、接口、委托)。

我首推的当然是大家最熟悉的,那就是数组:

由于在C#中限制了对指针的使用,所以对C#数组的使用也产生了影响。

首先还是看看例子:

int[] a;

int[] a = new int[32]

a[0]=35;

a[31]=322;

int[] b;

b=new int[32];

string[] c={"a","b","c"};

string[] d=new string[]{"a","b","c"};

对于上面的例子,说明了几个要注意的问题。

(1)在C#中数组的起始下标还是为0的。

(2)对数组的初始化要使用new运算符。

(3)在C#中也可以动态定义数组。

(4)对于数组的初始化支持和JAVA一样的{}方式。

(5)在数组的初始化中这种方式是决不不允许的

int len=3;

string d=new string[len]{"a","b","c"};

对应的解决方式:可以这么写:const int len=3;

也就是说不可以给变量来设置数组的长度。

(6)还忘了的一个就是数组定义要使用[]。

(7)再有一点不允许的使用方式如下:

string[] e=new string[3]{"a","b","c","d"};

下面再看个例子:

string[] d=new string[]{"Linda","Lily","Adidas"};

int ff=d.Length; //取数据长度

int ee=d.GetLength(0); //取出指定数据维的长度

Array.Sort(d); //对数组排序

Array.Reverse(d); //把数组反序

由于数组在C#中表示为一种特殊的类型,所以它们有自己的一些方法。这些方法为我们使用数组提供了很大的方便。

上面这些都是对一维数组的使用,同样C#也是支持多维数组的。下面来看看多维数组吧。

还是通过一个例子来认识一下多维数组的定义和操作。

int[,] a=new int[,]{{1,2,3},{1,2,3},{4,5,6}};

int[,,] b;

int[,,] b=new int[,,]{10,20,30};

string[][] aryLists=new string[3][];

aryLists[0]=new string[]{"a","b","c"};

aryLists[1]=new string[]{"d","e","f"};

aryLists[2]=new string[]{"g","h","i"};

int i;

for(i=0;i<aryLists.GetLength(0);i++)

{

int j;

for(j=0;j<aryLists[i].GetLength(0);j++)

{

Console.Write(aryLists[i][j] + ",");

}

Console.Write("\n");

}

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
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- 王朝网络 版权所有