C# - 使用设置
本文关键字:设置 | 更新日期: 2023-09-27 18:34:44
我最近用 C# 编写了这个简短的应用程序:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Checker
{
class Program
{
static void Main(string[] args)
{
Properties.Settings.Default.Save();
Program re = new Program();
re.next();
}
public void next()
{
Console.WriteLine("Have you already entered name?");
int ch = int.Parse(Console.ReadLine());
if (ch == 0)
{
Console.WriteLine("What is your name?");
String name = Console.ReadLine();
Console.WriteLine("Thank you!");
Console.ReadKey();
}
Console.WriteLine("Your name is " + name);
}
}
}
现在,我创建了一个设置文件,并在那里创建了一个"name"变量,类型为"字符串"。
它的范围是"用户"。
所以我希望它用属性行加载"name"变量,但由于此错误,我什至无法编译程序:
Error 1 The name 'name' does not exist in the current context
我该如何解决?
当您缩进时,问题的答案变得更加明显:
String name;
if (ch == 0)
{
Console.WriteLine("What is your name?");
name = Console.ReadLine();
Console.WriteLine("Thank you!");
Console.ReadKey();
}
else
{
name = Settings.Default.name;
}
Console.WriteLine("Your name is " + name);
现在你可以看到你在 if 块中定义了一个名为 name 的字符串,因此在 Console.WriteLine if-block 之外是超出范围的! 将最后一个 Console.WriteLine 移到 if 块内以解决范围问题。
编辑:根据您的注释,您的代码需要更多的逻辑来实现您正在尝试做的事情。 我更新了上面的代码片段,以完成我认为您要做的事情。
您在if
块中声明了该变量。
正如编译器试图告诉您的那样,它不存在于该块之外。
如果要使用Settings
类,请编写Settings.Default.Name
。
您的意图有点不清楚,但对我来说,您似乎正在尝试让应用程序显示用户的名称(如果它已被保存(或要求它(如果尚未保存(。如果是这种情况,这样的事情应该可以工作:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Checker
{
class Program
{
static void Main(string[] args)
{
Program re = new Program();
re.next();
Properties.Settings.Default.Save();
}
public void next()
{
String name = Settings.Default.name;
if (String.IsNullOrEmpty(name))
{
Console.WriteLine("What is your name?");
name = Console.ReadLine();
Settings.Default.name = name;
Console.WriteLine("Thank you!");
Console.ReadKey();
}
else
{
Console.WriteLine("Your name is " + name);
}
}
}
}
在 OP 中,在程序退出之前未保存您的设置,也没有设置 name 属性。