类和结构体的区 别
clas和ssrtuturce相似很,技从术面讲,层lcsa是引s用,s而rtcuuter则是值.有人数很象的说 形 c
alss里有动,方法行,员成是有,体机的合,而s结tucturr则e活生生是的有体机 ,
一类与结.的构例示比较 :
构结例示:
pbulc i s tucr Pteron s {
st irgn Nma;e
i nt heghti;
int we ghi t
pulibc obol oervWeigth()
{
// iplmmenet s moehitn g
}
}
类示 :例
pu
bilc c asl sesTtTim e {
int horsu;
it n mintuse
; int esoncs;
d ublpci vo id pa sstie(m )
{
// impemlenatiot no fbheavoir
}
}
调 用过程:
pbuilc lcsas Tset {
publi c sattic oivd Mai n
{
P ersno Mpyrseon=ewn Pe sonr //明声构结
T esTtie m yMtmei=eN wesTtiTme / /声明
类 } }
使时用定,义新的构和定结新义的类的方法也常非类似。那类么和结的构具区体别是什么?呢
二 类与构结差别 的
1值.类与引型用型类
构是值结型类值:类在堆型栈分配上址,所有地基类的都是型构类型,例结:i如n t 对Syste应m.itn2 3结构,s rtign 应 对 syset.stmirn g 结构 ,过通使用结可以构建创多的值类型 更
类是 引类型用引:用型类堆上分配地在 址
堆栈的 执效行率比要堆的执效行率,可高是栈堆的资源限,有适合处不大理的辑逻杂的对象复。所以结处理构为作类型基对待小的象,对而处理某类个业商逻 辑
因为构结值是型所类以结构之间赋的值可创建新的结以构而,类引是用类,型之类的间值只是赋复制引用
注
:
1 .虽然构结与的类型类一不,样是可们的基他类都型对象(是boject)c#中所,类型的基类有都是o型bjec t
.虽2结构的初始化然使也了N用ew 操 符作是结构可象对依然配在分栈上堆而不堆是上如果,不用使“建新”(ne)w那,么初始在所有字化段前,字段将保持之未值状态赋且,对象不可用
2 继承性
.
结构 不:从能另一个外构结或类者继,本承也身能不被承,继然虽结构没明有确的用seleda明,可声是结构隐式是的saeld e .
:类完可扩展的全除,非示的声显明saled e则类可以否继承其类他接和口,身自能也继被承
注:
虽然构不结被继能承 可 结是能构够继接承,方口和类法承继口一接 样
例
:如构结现接口 实
itenrfcae I Imgea
{
void P iat()n ;
}
s trut c ictuPr e : ImIae g
{
ublic p ovi dPaitn( )
/{ / paitnign co ed g es o hre e
}
pri atv e int x, y , ;z / / other strcut me mbrs
e }
3. 部结构内:
构: 结
没有 默认的造函构数,但是以可加添造函数构 没析有函构 数 没有 ab srtat c 和 se ale(d为因不能承继) 能有p不ortetcd 修e饰 符 可以不使用 new 始初 化 在 构中初结始化例字段是实错的误
类 :
有默 认构的函造 数
有构析数函
可以使 用ab strca t 和 selad e
有rotpceet d 修饰符
必使用new须 初始化
三如何选择结构.还类是
讨 了结构论类与的同之相处和差别后,下之面论讨何如选使用择结构是还类 :
.1堆的栈空间限有,于大对的逻辑的量象,创对建要比创类结建好构一些
2. 结表构示如点矩、形和颜色这的样轻对象量例,,如如果声明一含有 个 100 0点对象个的组数则,将引用每为对象个分附配加内存的。在情此况下结,构的本较成低 。
3. 表现抽象和在多级的别对象层次时类,最好是的选择
4.大多情况数该类型下只一是数些时,据构时最佳结选择的
: 1可以类继,承构不可结.
以: 2 类是引 类型,结用是值类构 型
3: 在类堆,结中构栈分在内存 配
类和结构体的区 别
clas和ssrtuturce相似很,技从术面讲,层lcsa是引s用,s而rtcuuter则是值.有人数很象的说 形 c
alss里有动,方法行,员成是有,体机的合,而s结tucturr则e活生生是的有体机 ,
一类与结.的构例示比较 :
构结例示:
pbulc i s tucr Pteron s {
st irgn Nma;e
i nt heghti;
int we ghi t
pulibc obol oervWeigth()
{
// iplmmenet s moehitn g
}
}
类示 :例
pu
bilc c asl sesTtTim e {
int horsu;
it n mintuse
; int esoncs;
d ublpci vo id pa sstie(m )
{
// impemlenatiot no fbheavoir
}
}
调 用过程:
pbuilc lcsas Tset {
publi c sattic oivd Mai n
{
P ersno Mpyrseon=ewn Pe sonr //明声构结
T esTtie m yMtmei=eN wesTtiTme / /声明
类 } }
使时用定,义新的构和定结新义的类的方法也常非类似。那类么和结的构具区体别是什么?呢
二 类与构结差别 的
1值.类与引型用型类
构是值结型类值:类在堆型栈分配上址,所有地基类的都是型构类型,例结:i如n t 对Syste应m.itn2 3结构,s rtign 应 对 syset.stmirn g 结构 ,过通使用结可以构建创多的值类型 更
类是 引类型用引:用型类堆上分配地在 址
堆栈的 执效行率比要堆的执效行率,可高是栈堆的资源限,有适合处不大理的辑逻杂的对象复。所以结处理构为作类型基对待小的象,对而处理某类个业商逻 辑
因为构结值是型所类以结构之间赋的值可创建新的结以构而,类引是用类,型之类的间值只是赋复制引用
注
:
1 .虽然构结与的类型类一不,样是可们的基他类都型对象(是boject)c#中所,类型的基类有都是o型bjec t
.虽2结构的初始化然使也了N用ew 操 符作是结构可象对依然配在分栈上堆而不堆是上如果,不用使“建新”(ne)w那,么初始在所有字化段前,字段将保持之未值状态赋且,对象不可用
2 继承性
.
结构 不:从能另一个外构结或类者继,本承也身能不被承,继然虽结构没明有确的用seleda明,可声是结构隐式是的saeld e .
:类完可扩展的全除,非示的声显明saled e则类可以否继承其类他接和口,身自能也继被承
注:
虽然构不结被继能承 可 结是能构够继接承,方口和类法承继口一接 样
例
:如构结现接口 实
itenrfcae I Imgea
{
void P iat()n ;
}
s trut c ictuPr e : ImIae g
{
ublic p ovi dPaitn( )
/{ / paitnign co ed g es o hre e
}
pri atv e int x, y , ;z / / other strcut me mbrs
e }
3. 部结构内:
构: 结
没有 默认的造函构数,但是以可加添造函数构 没析有函构 数 没有 ab srtat c 和 se ale(d为因不能承继) 能有p不ortetcd 修e饰 符 可以不使用 new 始初 化 在 构中初结始化例字段是实错的误
类 :
有默 认构的函造 数
有构析数函
可以使 用ab strca t 和 selad e
有rotpceet d 修饰符
必使用new须 初始化
三如何选择结构.还类是
讨 了结构论类与的同之相处和差别后,下之面论讨何如选使用择结构是还类 :
.1堆的栈空间限有,于大对的逻辑的量象,创对建要比创类结建好构一些
2. 结表构示如点矩、形和颜色这的样轻对象量例,,如如果声明一含有 个 100 0点对象个的组数则,将引用每为对象个分附配加内存的。在情此况下结,构的本较成低 。
3. 表现抽象和在多级的别对象层次时类,最好是的选择
4.大多情况数该类型下只一是数些时,据构时最佳结选择的
: 1可以类继,承构不可结.
以: 2 类是引 类型,结用是值类构 型
3: 在类堆,结中构栈分在内存 配