对于可以在每个代码区域中声明的变量



我不知道该用什么来定义我的问题。假设下面的代码将每个区域命名为A、B、C,有些类型是可声明的,有些是不可能的。我想知道这个区别。

(该代码只是脱木素的一个例子。(

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
// Area A
delegate int MyDelegate(int a, int b);
public enum myenum { a,b,c };
class another { }
//int a; you can't 
//void func(int a); you can't
namespace ConsoleApp1
{
// Area B
class A
{
// Area C
public int Func(int a, int b) { return a + b; }
}
class Program
{

static void Main(string[] args)
{
A a = new A();
MyDelegate d = new MyDelegate(a.Func);
d(1,2);
}
}
}

你能告诉我这件事吗?或者我应该搜索什么?

我试图在每个不同的区域声明一个变量。我认为由于全局变量的问题而阻止了它,但我想知道细节。

在您的示例中,您只能在区域A和B中定义类型(类、结构、枚举、委托(。区域A在命名空间声明之外,因此在其中声明的任何类型都将是根命名空间的成员。区域B在名称空间声明中,因此在其中声明的类型将是该名称空间的成员。

区域C位于类型(A类(内部,因此您可以在其中声明任何类型成员(嵌套类型、字段、属性、方法、事件(。

最新更新