C#:我无法访问我的结构成员

C#:我无法访问我的结构成员,c#,struct,C#,Struct,我正在尝试下面这个简单的代码,但令人惊讶的是编译器说 “名称pq在当前上下文中不存在” 但是,正如您所看到的,它在所需的范围内。即使添加了getter和setter,我也无法做到这一点 namespace AskYourQuestion { public struct QuestionNum { public string Q1; } class Questions { QuestionNum pq = new Ques

我正在尝试下面这个简单的代码,但令人惊讶的是编译器说

“名称pq在当前上下文中不存在”

但是,正如您所看到的,它在所需的范围内。即使添加了getter和setter,我也无法做到这一点

namespace AskYourQuestion
{
    public struct QuestionNum
    {
        public string Q1;
    }

    class Questions
    {

        QuestionNum pq = new QuestionNum();
        pq.Q1 = "hi";

    }
}

我想用一些字符串创建一个
结构
,并创建一些
,这些类在特定语言中初始化字符串,在主程序中,根据用户语言,字符串为他显示。

您应该将该行放在方法或构造函数中

 public class Questions
{

    QuestionNum pq = new QuestionNum();

    Questions()
    {
        pq.Q1 = "hi";
    }

}
你也可以

public struct QuestionNum
{
    public string Q1;
}

public partial class Form1 : Form
{
    QuestionNum pq = new QuestionNum()
    {
        Q1 = "something"
    };
}

下面是一些帮助您进一步剖析问题的输入

当前:

namespace AskYourQuestion
{
    public struct QuestionNum
    {
        public string Q1;
    }

    class Questions
    {
        QuestionNum pq = new QuestionNum();
        // pq.Q1 = "hi"; --> This will not work
        // Why? See below        
    }
}
类是一个规范,我们在其中封装它应该包含的成员

这里的
Questions
类封装了
QuestionNum
类型的成员
pq
,我们应该指定如何构造
Questions
类及其封装成员

实现这一点的不同方法:


  • 默认值:
    QuestionNum pq=new QuestionNum(){Q1=“Hi”}
  • 构造它:
    公共问题(字符串defaultValue){this.pq.Q1=
    defaultValue;}
  • 方法/设置器
每种方法的示例:


默认值:

namespace AskYourQuestion
{
    public struct QuestionNum
    {
        public string Q1;
    }

    class Questions
    {
        internal QuestionNum pq = new QuestionNum() { Q1 = "Hi" };
    }
}

构建它:

namespace AskYourQuestion
{
    public struct QuestionNum
    {
        public string Q1;
    }

    class Questions
    {
        internal QuestionNum pq = new QuestionNum() { Q1 = "Hi" };

        public Questions()
        {
        }

        public Questions(string defaultValue)
        {
            this.pq.Q1 = defaultValue;
        }
    }
}
要使用它:

Questions quest = new Questions("World");
Console.WriteLine(quest.pq.Q1);


还有很多其他的方法,但是你需要根据你的问题选择最好的案例

把你的陈述放在一个方法中,你不能把这行写进
pq.Q1=“hi”就像在类范围中那样。它需要在方法范围内。您还应该了解为什么
QuestionNum pq=new QuestionNum(){Q1=“hi”}
是另一种选择,如果您解释了希望实现的目标,而不仅仅是您正在做的事情,那么它将非常有帮助。