繁体   English   中英

C#-使用设置

[英]C# - Using Settings

我最近用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”变量,但由于此错误,我什至无法编译程序:

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的字符串,因此在if块外的Console.WriteLine中使用了它,超出了范围! 将最后一个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属性。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM