当我去声明一个Character类型的变量时,访问类型为public,它给出了错误“Unexpected symbol,public”。
public static void Main (string[] args)
{
public Character player = new Character();
Map map = new Map();
ReciveInput();
}
角色等级
using System.Collections.Generic;
using System;
namespace SimpleTextAdventure
{
public class Character
{
public Character ()
{
List<string> items = new List<string>();
public Vector location = new Vector(2,2);
}
}
}
删除公共修复错误然后,据我所知,将给它默认类型内部,这不是我想要的。错误的原因是什么?
答案 0 :(得分:0)
您只能将public
用于字段,而不能用于本地变量:
public class SomeClass
{
public Character player1 = new Character(); // this will compile
public void SomeMethod()
{
public Character player2 = new Character(); // this won't compile
}
}
从public
删除player1
确实会使其成为内部版本。但是,相同的可见性规则不适用于方法中定义的局部变量。它们既不是public
也不是internal
;它们是该方法的私有方式,只有在执行方法时才存在,除非在闭包的专业情况下。
假设您希望player
可用于代码的其他部分,您需要做的是从Main
中删除声明,而是将以下内容添加到其类中:< / p>
public static Character player = new Character();
请注意,虽然这样的全局变量是非常糟糕的做法。你最好在Main
中创建它,然后在通过构造函数创建它们时将它传递给其他类。例如,如果Map
需要了解角色的位置,因此需要访问player
,您可以将代码更改为:
public static void Main (string[] args)
{
Character player = new Character();
Map map = new Map(player);
ReciveInput();
}
public class Map
{
private readonly Character _player;
public Map(Character player)
{
_player = player;
}
public SomeMethod
{
// access the character using _player here
}
}