C#:我无法访问我的struct成员

时间:2017-11-21 18:43:01

标签: c# struct

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

  

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

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

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

    class Questions
    {

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

    }
}

我想创建一个带有一些字符串的struct并创建一些classes来初始化特定语言的字符串,而主程序则取决于用户语言,字符串会显示给他。

3 个答案:

答案 0 :(得分:1)

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

 public class Questions
{

    QuestionNum pq = new QuestionNum();

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

}

答案 1 :(得分:1)

以下几条输入可帮助您进一步剖析问题。

当前:

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

    class Questions
    {
        QuestionNum pq = new QuestionNum();
        // pq.Q1 = "hi"; --> This will not work
        // Why? See below        
    }
}

Class是一个规范,我们封装它应该拥有的成员。

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

执行此操作的不同方法:

  • 默认值:QuestionNum pq = new QuestionNum() { Q1 = "Hi" };
  • 构建它:public Questions(string 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);

还有很多其他方法,但您需要根据您的问题选择最佳案例。

答案 2 :(得分:0)

你也可以

public struct QuestionNum
{
    public string Q1;
}

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