分享
 
 
 

C#速成(之二)

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

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

数据类型

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

所有C#数据类型都派生自基类Object。这里有两类数据类型:

基本型/内置型 用户自定义型

下面一个C#内置类型列表:

类型

字节数

解释

byte

1

无符号字节型

sbyte

1

有符号字节型

short

2

有符号短字节型

ushort

2

无符号短字节型

int

4

有符号整型

uint

4

无符号整型

long

8

有符号长整型

ulong

8

无符号长整型

float

4

浮点数

double

8

双精度数

decimal

8

固定精度数

string

unicode字串型

char

unicode字符型

bool

真假布尔型

注意:C#当中的类型范围与C++有所不同;例如,C++的long型是4个字节,而在C#当中是8个字节。同样地,bool型和string型都不同于C++。bool型只接受true和false两种值。不接受任何整数类型。

用户定义类型包括:

类类型(class)

结构类型(struct)

接口类型(interface)

数据类型的内存分配形式的不同又把它们分成了两种类型:

值类型(Value Types)

引用类型(Reference Types)

值类型:

值类型数据在栈中分配。他们包括:所有基本或内置类型(不包括string类型)、结构类型、枚举类型(enum type)

引用类型:

引用类型在堆中分配,当它们不再被使用时将被垃圾收集。它们使用new运算符来创建,对这些类型而言,不存在C++当中的delete操作符,根本不同于C++会显式使用delete这个运算符去释放创建的这个类型。C#中,通过垃圾收集器,这些类型会自动被收集处理。

引用类型包括:类类型、接口类型、象数组这样的集合类型类型、字串类型、枚举类型

枚举类型与C++当中的概念非常相似。它们都通过一个enum关键字来定义。

示例:

enum Weekdays

{

Saturday, Sunday, Monday, Tuesday, Wednesday, Thursday, Friday

}

类类型与结构类型的比较

除了在内存分配形式上外,类与结构的概念完全与C++相同。类的对象被分配在堆中,并且通过new来创建,结构也是被new创建但却被分配在栈当中。C#当中,结构型适于快速访问和拥有少量成员的数据类型。如果涉及量较多,你应该创建一个类来实现他。

(译者注:这与堆和栈内存分配结构的特点有关。简而言之,栈是一种顺序分配的内存;堆是不一定是连续的内存空间。具体内容需要大家参阅相关资料)

示例:

struct Date

{

int day;

int month;

int year;

}

class Date

{

int day;

int month;

int year;

string weekday;

string monthName;

public int GetDay()

{

return day;

}

public int GetMonth()

{

return month;

}

public int GetYear()

{

return year;

}

public void SetDay(int Day)

{

day = Day ;

}

public void SetMonth(int Month)

{

month = Month;

}

public void SetYear(int Year)

{

year = Year;

}

public bool IsLeapYear()

{

return (year/4 == 0);

}

public void SetDate (int day, int month, int year)

{

}

...

}

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

属性

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

如果你熟悉C++面象对象的方式,你就一定有一个属性的概念。在上面示例当中,以C++的观点来看,Data类的属性就是day、month和year。用C#方式,你可以把它们写成Get和Set方法。C#提供了一个更方便、简单、直接的方式来访问属性。

因此上面的类可以被写成:

using System;

class Date

{

public int Day{

get {

return day;

}

set {

day = value;

}

}

int day;

public int Month{

get {

return month;

}

set {

month = value;

}

}

int month;

public int Year{

get {

return year;

}

set {

year = value;

}

}

int year;

public bool IsLeapYear(int year)

{

return year%4== 0 ? true: false;

}

public void SetDate (int day, int month, int year)

{

this.day = day;

this.month = month;

this.year = year;

}

}

你可在这里得到并设置这些属性:

class User

{

public static void Main()

{

Date date = new Date();

date.Day = 27;

date.Month = 6;

date.Year = 2003;

Console.WriteLine("Date: {0}/{1}/{2}", date.Day,

date.Month,

date.Year);

}

}

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