从公共方法返回私有变量的C#参数

时间:2017-10-02 11:22:46

标签: c#

而在VB标准编程中,使用类的实践是直接设置一个私有变量,只能通过公共方法访问它以返回它的值,这似乎不起作用。或许我的问题在于如何处理参数和参数。

我非常感谢有人可以解决这个问题。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Program
{
class Program
{

    private string name;

    static void Main(string[] args)
    {
        SetName();
        Console.WriteLine("Name: " & ReturnName());
    }
    private static void SetName()
    {
        Console.WriteLine("What is your name?");
        string name = Console.ReadLine();
    }
    public static string ReturnName(string name)
    {
        return name;
    }
}
}

错误:

Screenshot of Problem

4 个答案:

答案 0 :(得分:3)

您正在使用不同的变量。这些变量唯一共享的是他们的名字。这段代码可以使用:

private static string name;

static void Main(string[] args)
{
    SetName();
    Console.WriteLine("Name: " + ReturnName());
}

private static void SetName()
{
    Console.WriteLine("What is your name?");
    name = Console.ReadLine();
}

public static string ReturnName()
{
    return name;
}

更好的方法是从SetName方法返回值并在方法范围内重用它,但这只是我的意见:

static void Main(string[] args)
{
    string name = AskName();
    Console.WriteLine($"Name: {name}.");
}

private static string AskName()
{
    Console.WriteLine("What is your name?");
    return Console.ReadLine();
}

答案 1 :(得分:1)

您想要的概念在C#属性中调用。

public string Name { get; set; }

它会自动声明您的类中的一个字段以及包装它的get set方法,因此您不必编写它们。但如果你愿意,你可以:

public string Name 
{
    get {return _name;}
    set {_name = value;}
}

string _name;

您的代码无效,因为您在方法中创建局部变量。要更正它,请static保持一致并删除变量:

private static string name;

private static void SetName()
{
    Console.WriteLine("What is your name?");
    name = Console.ReadLine();
}
public static string ReturnName()
{
    return name;
}

答案 2 :(得分:0)

当您声明了类级变量'name'时,您可以在类范围中初始化它一次,并且可以将它作为参数传递给'ReturnName'函数。

您根本不需要'ReturnName'功能。我将其修改为'SetName'为'GetName',它返回用户输入的名称。您可以直接在主函数中打印,如下所示,

  static void Main(string[] args)
    {
        string name = GetName();
        Console.WriteLine("Name: " + name);
    }


    private static string GetName()
    {
        Console.WriteLine("What is your name?");
        string name = Console.ReadLine();
        return name;
    }

答案 3 :(得分:0)

您可能想了解范围界定。在SetName()中,您声明了一个名为SetName()的局部变量(仅在name中可访问)。但是,这绝不会连接到您在类开头声明的实例变量name

此外,C#中的字符串连接是使用+完成的,而不是&