C# 方法类的字符串

C# 方法类的字符串,c#,string,class,C#,String,Class,那么,我如何才能将“kalle”改为一个名为“name”的字符串,这样程序的用户就可以决定调用该人的时间 *我可以澄清我想做什么:*我正在寻找的是,我可以决定用户想要的任何名称,而不是“kalle”,所以将“kalle”更改为字符串…当前版本的代码存在一些问题 name是Person中的一个静态字段,它与Person类型而不是实例相关联。删除静态修饰符,这样每个人都可以有自己的名字 C#members的默认可见性为private,这意味着没有人可以访问name或age。它们应该是内部的或公共的

那么,我如何才能将“kalle”改为一个名为“name”的字符串,这样程序的用户就可以决定调用该人的时间


*我可以澄清我想做什么:*我正在寻找的是,我可以决定用户想要的任何名称,而不是“kalle”,所以将“kalle”更改为字符串…

当前版本的代码存在一些问题

  • name
    Person
    中的一个静态字段,它与
    Person
    类型而不是实例相关联。删除
    静态
    修饰符,这样每个
    人都可以有自己的名字
  • C#members的默认可见性为
    private
    ,这意味着没有人可以访问
    name
    age
    。它们应该是
    内部的
    公共的
  • 通常,您应该更喜欢属性而不是字段
下面是代码和建议的更改

class Program
{
    static void Main(string[] args)
    {
      string name= "noName";
      name= Console.ReadLine();
      person kalle = new person();
}

class person
{
    static string name;
    int age;

    public void setName(string n)
    {
        name= n;
    }
}

当前版本的代码有几个问题

  • name
    Person
    中的一个静态字段,它与
    Person
    类型而不是实例相关联。删除
    静态
    修饰符,这样每个
    人都可以有自己的名字
  • C#members的默认可见性为
    private
    ,这意味着没有人可以访问
    name
    age
    。它们应该是
    内部的
    公共的
  • 通常,您应该更喜欢属性而不是字段
下面是代码和建议的更改

class Program
{
    static void Main(string[] args)
    {
      string name= "noName";
      name= Console.ReadLine();
      person kalle = new person();
}

class person
{
    static string name;
    int age;

    public void setName(string n)
    {
        name= n;
    }
}

在程序中调用
kalle.setName(name)
后,在class
person
中删除字段
string name
static
修饰符。

在class
person
调用
kalle.setName(name)后删除字段
string name
修饰符
在您的程序中。

覆盖
ToString()
,类似以下内容:

class person
{
    public string name { get; set; }
    public int age { get; set; }
}

...

string name = "noName";
name = Console.ReadLine();
person kalle = new person();
kalle.name = name;
因此,您可以:

class Person
    {
        .....
        .....
       public override string ToString() {
            return name;
       }
    }
因此这里的
kalle
的字符串表示形式变成了“Hello”(
name
属性的内容)

如果这不是你想要的,请澄清

编辑

多读一本的例子

person kalle = new person();
kalle.name = "Hello"; 
string value = falle.ToString();
字符串s=null;
而((s=Console.ReadLine())!=“x”){
WriteLine(“您将添加多少人?”);
int howMany=Console.ReadLine();
对于(int i=0;i覆盖
ToString()
,类似以下内容:

class person
{
    public string name { get; set; }
    public int age { get; set; }
}

...

string name = "noName";
name = Console.ReadLine();
person kalle = new person();
kalle.name = name;
因此,您可以:

class Person
    {
        .....
        .....
       public override string ToString() {
            return name;
       }
    }
因此这里的
kalle
的字符串表示形式变成了“Hello”(
name
属性的内容)

如果这不是你想要的,请澄清

编辑

多读一本的例子

person kalle = new person();
kalle.name = "Hello"; 
string value = falle.ToString();
字符串s=null;
而((s=Console.ReadLine())!=“x”){
WriteLine(“您将添加多少人?”);
int howMany=Console.ReadLine();

对于(int i=0;i是否要动态设置实例的名称

所以你有

string s = null;
while((s = Console.ReadLine())!="x") {
    Console.WriteLine("how many people would you add?"); 
    int howMany = Console.ReadLine();
    for(int i=0;i<howMany ;i++) 
    {

       //create Person objects and add them to the collection

       //ask user to insert the name for current Person
       Console.WriteLine(string.Format("Please insert the name for the Person {0}", i));

      //read the name
      string name = Console.ReadLine();

      //construct Person object, based on (i) and (name)
    }
}
如果用户输入“sven”,您将得到

person kalle = new person()

??是否要动态设置实例的名称

所以你有

string s = null;
while((s = Console.ReadLine())!="x") {
    Console.WriteLine("how many people would you add?"); 
    int howMany = Console.ReadLine();
    for(int i=0;i<howMany ;i++) 
    {

       //create Person objects and add them to the collection

       //ask user to insert the name for current Person
       Console.WriteLine(string.Format("Please insert the name for the Person {0}", i));

      //read the name
      string name = Console.ReadLine();

      //construct Person object, based on (i) and (name)
    }
}
如果用户输入“sven”,您将得到

person kalle = new person()


??

kalle
是一个人,所以你不能将其更改为字符串。你能澄清一下你的意思吗?看起来你缺少了一些代码。你能解释一下你想要更容易理解的是什么吗?你想要变量名
kalle
更改吗?变量名不是这样工作的。
kalle
是一个人,所以你不能更改你能澄清你的意思吗?看起来你缺少了一些代码。你能解释一下你想要什么更容易理解吗?你想改变变量名
kalle
?这不是变量名的工作方式。你也可以将它保留为私有,使用
setName
@Blorgbeard这是C,但不是Java。我会的使用属性(新代码示例所做的)与显式
getName
/
setName
方法我可以澄清我想要做的事情:我正在寻找的是,我可以决定用户想要什么而不是“kalle”的名称,所以更改“kalle”对于一个字符串…@JaredPar这是真的-那么也许可以从建议的代码中删除setName?@Blorgbeard doh,在我喝完第一杯咖啡之前,我回答了这个问题。我读过这个问题,认为它是一个ctor而不是
setName
方法。我删除了它。你也可以将它保留为私有,并使用
setName
@Blorgbeard这是C#虽然不是Java,但我会使用属性(新代码示例会使用),而不是显式的
getName
/
setName
方法。我可以澄清我想要做的事情:我正在寻找的是,这样我就可以决定用户想要的任何名称,而不是“kalle”,所以更改“kalle”对于字符串…@JaredPar,这是真的-那么也许可以从建议的代码中删除setName?@Blorgbeard doh,在我喝完第一杯咖啡之前,我回答了这个问题。我读过这个问题,认为它是一个ctor而不是一个
setName
方法。我删除了它。我正在寻找的是这样我就可以决定用户想要的名称“kalle”的d.@kalle:我可以理解。你想让用户而不是kalle.name写“你好”.name??If,so:这是不可能的。好吧,但是在If语句中有没有任何方法可以让我得到用户指定的人数???@flamme:请提供一个小的代码示例,我不太明白你的意思。`Console.WriteLine(“你要添加多少人?”);int howMany=Console.ReadLine();`and加上“for”重复并这样做,可以是x个我以后可以给名字的人,等等。我要找的是,我可以决定用户想要什么名字,而不是“kalle”。@kalle:我可以理解。你希望用户以某种方式而不是kalle。name可以写“Hello”.name??如果,那么:这是不可能的。好吧,但在一个i中有没有任何方式