----C#推进孙文教程(七)
好的,好的。我想说的是C #结构(struct),注意语言结构,我这里说的不是C #。这里是一个类(类)相对于某个东西,我会说,并比较结构。
下面的示例演示如何使用属性、方法和字段构建一个结构。以及如何使用他。
000: / / struct1.cs结构
001:使用系统;
002:结构simplestruct
{ 003:
004:私有xVal;
005:公共int
{ 006:
007:{拿
008:返回xVal;
009:}
010:{集
011:如果(价值012:xVal =价值;
013:}
014:}
015:public void()DisplayX
{ 016:
017:Console.WriteLine(存储的值是:{ 0 }
018:}
019:}
020:
021:class TestClass
{ 022:
023:公共静态空主()
{ 024:
025:simplestruct SS =新simplestruct();
026:SS = x = 5;
027:ss.displayx();
028:}
029:}
这个例子的输出是:
存储值为:5。
从上面的例子,我们可以看到结构,似乎是相同的。事实上,如果你用Pro类编写这个程序,结果是一样的。但显然,这两件事是不可能一起出现的。结构(结构)是一种值类型,而(值)是一种引用类型。通过这种方式,您可以创建类似内置类型(如结构)的对象。
如果使用新关键字创建一个类的实例时,它是基于反应堆(堆)的分布,并使用new来构建示例的结构,它是基于堆栈(堆栈)分布的。这将大大提高我们的绩效(M说)。让我们看看下面的例子:
000: / / struct2.cs结构
001:使用系统;
002:
003:班班
{ 004:
005:公共int;
006:}
007:
008:结构thestruct
{ 009:
010:公共int;
011:}
012:
013:class TestClass
{ 014:
015:public static void structtaker(thestruct S)
{ 016:
017:s.x = 5;
018:}
019:public static void classtaker(C类)
{ 020:
021:C.X = 5;
022:}
023:公共静态空主()
{ 024:
025:thestruct =新thestruct();
026:乙类=新类();
027: a.x = 1;
028:b.x = 1;
029:structtaker(一);
030:classtaker(B);
031:Console.WriteLine(内= { 0 }
032:Console.WriteLine(b.x = { 0 }
033:}
034:}
这个例子的输出是:
A.x = 1b。x = 5
从这个例子中,我们可以看到当一个结构被传递给一个方法时,它只是一个拷贝。当一个类被传递时,它作为一个引用被传输。So the output of a.x= is 1, but b.x is changed.
没有新的结构来实例化类,但是必须。如果你不使用new实例化一个结构,那么所有的领域将继续分配,直到所有的字段被初始化。等,可以执行结构接口。更重要的是,没有继承,不是来自另一个类的结构,也不是其他类中的基类。
例三:
界面图像
{
虚空漆();
}
结构图:图像
{
公共空白漆()
{
代码在这里画
}
私有int x,y,z;其他结构成员
}
好吧,我来谈谈这个结构,我以后再谈。