当然不能这样,虽然a调用b,但b已经是另一个环境了,所以a内定义的变量只能在a的环境里用,b的环境不属于a,但调用b的这个动作属于a。这样改:
public void a()
{
    int x = 9;
b(x);

} private void b(int x)
{
Console.Write(x);
}