传入参数的名称与字段名称相同

Rag*_*v55 3 c#

class  Person
{
  public string name;

  public void SetName(string name)
  {
    name = name;
  }
}    

public void static Main(string[] args)
{    
  Person aPerson = new Person();
  aPerson.SetName("ruby");

  Console.WriteLine("person name is {0}}, aPerson.name);
}
Run Code Online (Sandbox Code Playgroud)

这个人的名字是空的.这可以消除使用this.name = name;

人名是空的(空字符串)是什么原因?

Jon*_*eet 6

目前,你的任务

name = name;
Run Code Online (Sandbox Code Playgroud)

只是将参数的值赋给自己.换句话说,这是一个无操作.

如果您将其更改为:

this.name = name;
Run Code Online (Sandbox Code Playgroud)

那就是将参数的值分配给你想要的字段.

但是,目前Person的name字段不会引用空字符串 - 它将是一个空引用.这两者之间有很大的不同.

(当然,通常你不应该有一个公共字段,你应该使用属性而不是SetName方法.)