C#/CS1061-引用从堆栈返回的类的属性时出错



我目前有这样的代码,它构造一个类并将其推入堆栈,然后"pops";从堆栈中取出对象,并从中记录属性。

public class Class {
public static Stack<object> ExampleStack = new Stack<object>();
public class ExampleClass 
{ 
public string A {get; set;}
public int b {get; set;}
public int C {get; set;}

ExampleClass(string a, int b, int c) 
{
A=a;
B=b;
C=c;
}
}
void main() 
{
ExampleStack.Push(new ExampleClass("E", 1, 2));
}

public static void TestStack() 
{
Temp = ExampleStack.Pop();
Console.Log(Temp.A);
}
}

我不明白为什么Temp.A在visual studio中编译之前会出现错误CS1061。

感谢提供的任何帮助

您需要更改此行:

public static Stack<object> ExampleStack = new Stack<object>();

到此:

public static Stack<ExampleClass> ExampleStack = new Stack<ExampleClass>();

CS1061表示:"type"不包含"member"的定义,并且找不到接受类型为"type"的第一个参数的扩展方法"name"(是否缺少using指令或程序集引用?(

您试图调用Temp.A,但Temp的类型是object,并且没有实现A

您可能还需要将ExampleClass对象移到它自己的CS文件中。

示例Class.cs:

public class ExampleClass 
{ 
public string A {get; set;}
public int B {get; set;}
public int C {get; set;}

public ExampleClass(string a, int b, int c) 
{
A=a;
B=b;
C=c;
}
}

程序.cs:

using System;
using System.Collections.Generic;
public static class Program
{
private static readonly Stack<ExampleClass> ExampleStack = new Stack<ExampleClass>();

static int Main()
{
ExampleStack.Push(new ExampleClass("E", 1, 2));
TestStack();
return 0;
} 

public static void TestStack() 
{
var Temp = ExampleStack.Pop();
Console.WriteLine(Temp.A);
}
}

最新更新