免责声明:我是C#的新手。我很可能做了一些非常错误的事情,但我不知道什么来尝试 Google 等所以我希望有人可以告诉我我做错了什么
无论如何,我正在用createPlayer
方法用我的构造函数创建一个玩家对象,我可以打印创建对象的值,但是之后我再也无法打印它了,它说:
当前上下文中不存在player1。
我该怎么办?
using System;
namespace project
{
class Program
{
static void Main(string[] args)
{
createPlayer();
Console.WriteLine(player1.Name); //Doesn't exist in current context
Console.ReadKey();
}
static public void createPlayer()
{
Console.WriteLine("\nType in your name :");
Player player1 = new Player(Console.ReadLine());
Console.WriteLine("\n Name: " + player1.Name + "\n Speed: " + player1.Speed + "\n Defence: " + player1.Defence + "\n Damage: " + player1.Damage);
Console.WriteLine("\nPress 1 to continue, Press 2 to reroll.");
}
}
}
using System;
using System.Collections.Generic;
using System.Text;
namespace projekti
{
public class Player
{
public string Name;
public int Speed;
public int Damage;
public int Defence;
public int Health;
public Player(string nm)
{
Name = nm;
Random r = new Random();
Speed = r.Next(1, 26);
Damage = r.Next(1, 26);
Defence = r.Next(1, 26);
Health = 100;
}
}
}
答案 0 :(得分:4)
player1
在createPlayer()
中实例化,因此在本地作用于该函数。如果您想让其他功能访问它,您可以createPlayer()
返回player1
。
static void Main(string[] args)
{
var player1 = createPlayer();
Console.WriteLine(player1.Name);
Console.ReadKey();
}
static public Player createPlayer()
{
Console.WriteLine("\nType in your name :");
Player player1 = new Player(Console.ReadLine());
Console.WriteLine("\n Name: " + player1.Name + "\n Speed: " + player1.Speed + "\n Defence: " + player1.Defence + "\n Damage: " + player1.Damage);
Console.WriteLine("\nPress 1 to continue, Press 2 to reroll.");
return player1;
}
答案 1 :(得分:1)
问题是你在 createPlayer() 方法中创建了 Player 的对象所以 播放器 的对象仅限于该块。所以你不能在这种方法中使用它。
好的,你可以这样做
*
driver.Navigate().GoToUrl(url);
driver.Manage().Window.Maximize();
*
所以你的createPlayer方法将返回你创建的当前对象,你将能够在main中使用它。
答案 2 :(得分:-1)
垃圾收集器(GC)将player1
放置在范围} 的末尾,因此在Console.WriteLine(player1.Name);
对象player1
中是不活着。
您需要为public
实例创建Player
属性。您可以按照此规范解决您的问题。
namespace project
{
class Program
{
public static Player player1{get;set;}
static void Main(string[] args)
{
createPlayer();
Console.WriteLine(player1.Name);
Console.ReadKey();
}
public static void createPlayer()
{
Console.WriteLine("\nType in your name :");
player1 = new Player(Console.ReadLine());
.
.
.
}
}