而在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;
}
}
}
错误:
答案 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#中的字符串连接是使用+
完成的,而不是&
。