gpt4 book ai didi

C# 当前上下文中不存在名称 ' ... '

转载 作者:太空宇宙 更新时间:2023-11-03 20:54:03 31 4
gpt4 key购买 nike

我是 C# 的新手,我尝试从最基础的知识开始学习它,但我坚持使用类(class)。我做了我的第一个例子来练习哪个工作正常但是当我增加一点复杂性时我得到一个错误:

"The name 'iArcher' doesn't exist in the current context."

请帮助解释问题所在并提出适当(且简单)的解决方案。

谢谢!

using System;

namespace Units
{
class Archer
{
public int id;
public int hp;
public float speed;
public float attack;
public float defence;
public float range;

public void setProp(int id, int hp, float sp, float at, float de, float ra)
{
this.id = id;
this.hp = hp;
speed = sp;
attack = at;
defence = de;
range = ra;
}

public string getProp()
{
string str = "ID = " + id + "\n" +
"Health = " + hp + "\n" +
"Speed = " + speed + "\n" +
"Attack = " + attack + "\n" +
"Defence = " + defence + "\n" +
"Range = " + range + "\n" ;

return str;
}

static void Main(string[] args)
{
string input = Console.ReadLine();

if (input == "create: archer")
{
Archer iArcher = new Archer();
iArcher.setProp(100, 20, 4f, 8f, 3.5f, 25f);
}

if (input == "property: archer")
{
Console.WriteLine(iArcher.getProp()); // ERROR!
}
Console.ReadLine();
}
}
}

最佳答案

C# 有作用域。范围内的项目可以看到包含它的范围内的所有内容,但外部范围无法看到内部范围内的内容。您可以阅读范围 here .

举个例子:

if (input == "create: archer")
{
Archer iArcher = new Archer();
iArcher.setProp(100, 20, 4f, 8f, 3.5f, 25f);
}

iArcher 在您的 if 语句的范围内,因此 if 语句之外的代码看不到它。

要解决此问题,请将定义或 iArcher 移到 if 语句之外:

Archer iArcher = new Archer();
if (input == "create: archer")
{
iArcher.setProp(100, 20, 4f, 8f, 3.5f, 25f);
}

if (input == "property: archer")
{
Console.WriteLine(iArcher.getProp());
}

请注意,这现在给您带来了另一个问题:input 不能同时是“create: archer”和“property: archer”。

一个解决方案可能是将读取用户输入移到一个循环内,同时将 iArcher 保留在该循环之外:

Archer iArcher = new Archer();
string input = null;

while ((input = Console.ReadLine()) != "exit")
{
if (input == "create: archer")
{
iArcher.setProp(100, 20, 4f, 8f, 3.5f, 25f);
}
else if (input == "property: archer")
{
Console.WriteLine(iArcher.getProp());
}
}

要退出循环,只需输入“exit”即可。

关于C# 当前上下文中不存在名称 ' ... ',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52354545/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com