-
c#语法学习之结构struct
/*结构体(struct)
*通常我们会用来封装小型相关变量
*例如,点的x,y的坐标.
*publicstructPoint
* 结构体是一个值类型
*{
* publicintX;
* publicintY;
*}
* 结构也可以包含建构函式、常数、栏位、方法、属性、索引子、运算子、事件和巢状型别,
* 虽然如果需要上述数种成员时,您应该考虑让型别变成类别。
* 结构可以实作介面,但不能继承自另一个结构。
* 因为如此,结构成员无法宣告为 protected。
*
* 结构有下列属性:
* 结构为实值型别,而类别则是参考型别。
* 与类别不同的是,结构不需使用 new 运算子就能执行个体化
* 结构可以宣告建构函式,但是必须采用参数
* 结构无法从另一个结构或类别继承而来,且它不能成为类别的基底。所有结构都是从继承自 System.Object 的 System.ValueType 直接继承而来
* 结构可实作介面
* 结构可以用来当做可为 Null 的型别,而且可以对其指派 null 值。
*
*
* 结构与类别所使用的语法几乎相同,不过结构的限制比类别多:
* 结构宣告内不能初始化栏位,除非将其宣告为 const 或 static。
* 结构不可宣告预设建构函式 (没有参数的建构函式) 或解构函式。
* 由於编译器会自动建立和终结结构的复本,因此不需要预设建构函式和解构函式。
* 实际上,编译器会指派其预设值的所有栏位来实作预设建构函式 (请参阅预设值表 (C# 参考))。结构无法继承自类别或其他结构。
* 结构为实值型别。当您从结构建立物件并指派给变数时,变数就会包含完整的结构值。当复制包含结构的变数时,就会复制所有资料,而新变数所做的任何修改并不会变更旧变数的资料
* 。由於结构不会使用参考,因此没有识别。您无法区别两个具有相同资料的实值型别执行个体。C# 中的所有实值型别都衍生自 ValueType,该型别则继承自 Object。
* 实值型别可由编译器在称为 boxing 的处理序中转换成参考型别。如需详细资讯,请参阅 Boxing 和 Unboxing (C# 程式设计手册)。
*
*
*/
usingSystem;
publicstructBook
{
publicintprice;
publicstringtitle;
publicstringauthor;
}
classTest
{
staticvoidMain()
{
Bookbk=newBook();
bk.price=23;
bk.title="書名";
bk.author="作者";
Console.WriteLine(bk.title.ToString()+bk.author.ToString()+bk.price.ToString());
}
}