好像印象中,C#程序的简单变量(数据字段)只能属于类或者结构,而没有像VB那种全局变量的说法。而下面这段代码我却将申明代理类型的语句并不属于任何一个类,但是编译器并未报错。各位帮忙看看如何解释?代码如下:
namespace delegateDemo2
{
using System;
public delegate int[] sort(int[] arr);
class Sort  //定义包含两种排序方法的类

public int[] maopaoSort(int[] arr)
{
int i,j,temp;
bool exchange=false;
if(arr.Length==0) 
{
Console.WriteLine("无法对空数组进行排序!");
}
else
{
for(i=0;i<arr.Length;i++)
{
for(j=arr.Length-2;j>=i;j--)
{
if(arr[j]>arr[j+1])  //交换条件
{
temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
exchange=true;
}
if(!exchange)  //未发生交换提前结束循环
{
break;
}
}
}
return arr;
}
public int[] xuanzeSort(int[] arr)
{
int i,j,temp;
if(arr.Length==0)
{
Console.WriteLine("无法对空数组进行排序!");
}
else
{
for(i=0;i<(arr.Length-1);i++)
{
for(j=i+1;j<arr.Length;j++)
{
if(arr[i]>arr[j])
{
temp=arr[j];
arr[j]=arr[i];
arr[i]=temp;
}
}
}
}
return arr;
}
}
public class MyArray //建立自已的数组类
{
clsMain main=new clsMain();
private int[] p_arr;  //私有字段
public MyArray(int[] arr):base() //构造函数
{
p_arr=arr;
}
public void maopaoSort(sort st)  //冒泡排序
{
p_arr=st(p_arr);
}
public void xuanzeSort(sort st)  //选择排序
{
p_arr=st(p_arr);
}
public void Output() //打印输出
{
for(int i=0;i<p_arr.Length;i++)
{
Console.Write(p_arr[i]+",");
}
Console.WriteLine();
}
} public class clsMain
{
public static void Main()
{
int[] myarr={4,21,1,45,65,22,3,2,11,22,10};
MyArray myarray=new MyArray(myarr);
Console.WriteLine("原数组:");
myarray.Output();
Sort newst=new Sort();
sort st1=new sort(newst.maopaoSort);
sort st2=new sort(newst.xuanzeSort);
Console.WriteLine("冒泡排序:");
myarray.maopaoSort(st1);
myarray.Output();
Console.WriteLine("选择排序:");
myarray.xuanzeSort(st2);
myarray.Output();
Console.ReadLine();
}
}
}