-1

我有两个用户定义的函数(WriteFunction)和(ReadFunction),第二个函数(ReadFunction)有错误,即当前上下文中不存在关键字。(在姓名、ID、年龄、电子邮件下划线。)

这是完整的代码:

//First Function
public static void WriteFunction()
    {

        int count = 0;
        while (count < 10)
        {
            Console.Write(" Enter your Name: ");
            string Name = Console.ReadLine();

            Console.Write(" Enter your ID: ");
            int ID = int.Parse(Console.ReadLine());

            Console.Write(" Enter your Age: ");
            int Age = int.Parse(Console.ReadLine());

            Console.Write(" Enter your E-mail: ");
            string Email = Console.ReadLine();

            count++;
        }

    }
    //Second Function
    public static void ReadFunction()
    {
        string output = string.Format("Thank you for registration! Your Submitted information are:" + Environment.NewLine + "Name: {0}"
        + Environment.NewLine + "ID: {1}" + Environment.NewLine + "Age: {2}" + Environment.NewLine + "E-mail: {3}", Name, ID, Age, Email);
        // I using the Environment.NewLine to insert new lines
        Console.WriteLine(output);

    }

等待您的答复。谢谢。

4

3 回答 3

4

C# 在很大程度上是一种面向对象的语言。除其他外,状态被存储为对象的成员变量。

因此,正如@LarsTech 指出的那样,您的NameIDAgeEmail都是该方法的局部变量。要使它们可用于另一种方法,您需要将它们移出作为类的字段。

public class MyFunctions
{
    private static string _name;
    private static int _id;
    private static int _age;
    private static string _email;

    public static void WriteFunction()
    {

        int count = 0;
        while (count < 10)
        {
            Console.Write(" Enter your Name: ");
            _name = Console.ReadLine();

            Console.Write(" Enter your ID: ");
            _id = int.Parse(Console.ReadLine());

            Console.Write(" Enter your Age: ");
            _age = int.Parse(Console.ReadLine());

            Console.Write(" Enter your E-mail: ");
            _email = Console.ReadLine();

            count++;
        }

    }

    public static void ReadFunction()
    {
        string output =
            string.Format(
                "Thank you for registration! Your Submitted information are:" + Environment.NewLine +
                "Name: {0}"
                + Environment.NewLine + "ID: {1}" + Environment.NewLine + "Age: {2}" + Environment.NewLine +
                "E-mail: {3}", _name, _id, _age, _email);
        // I using the Environment.NewLine to insert new lines
        Console.WriteLine(output);
    }
}

虽然我本可以保留名称,但我更改了它们以更好地反映私有变量的 C# 约定。

于 2013-04-25T21:48:16.183 回答
2

你真的应该阅读OOP教程,因为如果你想继续学习,它是最基本的概念之一C#

至于您的问题,如果我只是简单地重写您的整个代码以使其按您想要的方式工作(因为是的,它需要更改),那将无济于事。我强烈建议您阅读有关 OOP 的内容,并在深入了解它之前尝试了解它的工作原理。

在您的示例中,您说要ReadFunction()继承自WriteFunction(). 这里有几件事:

你应该很好地从良好的开始。同样,仅通过查看您的方法的名称,我们就可以知道它们可能不打算相互继承(暗示有类)。也许是这样的:

Parent Class : InformationManager 

Child  Class : ReadInformation inherits InformationManager
Child  Class : WriteInformation inherits InformationManager
于 2013-04-25T21:58:42.790 回答
0

静态事物(变量、方法、属性)不能被继承。 这是设计使然,我建议您阅读一些 c# 书籍以正确理解此概念和其他概念。

对于您的问题,在第一种方法中,将静态替换为虚拟。在第二个函数中,用覆盖替换静态。

virtual 告诉编译器方法是可继承的, override 告诉编译器方法实际上是继承的

于 2013-04-25T21:51:51.133 回答