-6

谁能告诉我如何使用stack.ofType<>?我已经尝试了很多次,但无法做到这一点。

private void button2_Click(object sender, EventArgs e)
{
    Stack st = new Stack();
    st.Push("joginder");
    st.Push("singh");
    st.Push("banger");
    st.Push("Kaithal");
    st.OfType<>  //how to work this option
}
4

4 回答 4

4

使用泛型Stack<T>类型而不是Stack,这样您将获得特定类型的堆栈,并且您不必转换从中读取的值:

Stack<string> st = new Stack<string>();
st.Push("joginder");
st.Push("singh");
st.Push("banger");
st.Push("Kaithal");

现在,当您从堆栈中弹出某些内容或遍历这些项目时,它已经是一个字符串,您不必强制转换它。

于 2013-02-13T15:59:55.307 回答
1

您提供这样的类型

st.OfType<string>()

这将返回一个 IEnumerable 供您进行迭代,而不会从堆栈中弹出任何项目。

鉴于此代码:

        Stack st = new Stack();
        st.Push("joginder");
        st.Push("singh");
        st.Push("banger");
        st.Push("Kaithal");
        st.Push(1);
        st.Push(1.0);

        foreach (var name in st.OfType<string>())
        {
            Console.WriteLine(name);
        }

你会得到这个输出:

 joginder
 singh
 banger
 Kaithal
于 2013-02-13T16:04:54.470 回答
0

这里有一个很好的例子:http: //msdn.microsoft.com/en-us/library/bb360913.aspx,但是,基本上你可以使用 OfType 来创建该特定类型的项目的 IEnumerable,例如如果您的代码为:

        Stack st = new Stack();
        st.Push("joginder");
        st.Push(1.4);
        st.Push("singh");
        st.Push("banger");
        st.Push(2.8); 
        st.Push("Kaithal");

        IEnumerable<String> strings = st.OfType<String>();  //how to work this option
        IEnumerable<double> doubles = st.OfType<double>();   

将创建“列表”,一个包含堆栈中的所有字符串,一个包含所有双打。

于 2013-02-13T16:05:59.243 回答
0

使用genericsStack<T>

private void button2_Click(object sender, EventArgs e)
    {
        Stack<string> st = new Stack<string>();
        st.Push("joginder");
        st.Push("singh");
        st.Push("banger");
        st.Push("Kaithal");
 }

你也可以这样做:

public class Client {
    public string Name { get; set; }
}

private void button2_Click(object sender, EventArgs e)
{
        Stack<Client> st = new Stack<Client>();
        st.Push(new Client { "joginder" });
        st.Push(new Client { "singh" });
        st.Push(new Client { "banger" });

}

请注意,类 Client 是为了演示如何T替换您分配的类型。

于 2013-02-13T16:06:24.983 回答