# V3005. The 'x' variable is assigned to itself.

The analyzer has detected a potential error when a variable is assigned to itself.

Consider the following example taken from a real-life application:

    public GridAnswerData(
      int questionId, int answerId, int sectionNumber,
      string fieldText, AnswerTypeMode typeMode)
    {
      this.QuestionId = this.QuestionId;
      this.AnswerId = answerId;
      this.FieldText = fieldText;
      this.TypeMode = typeMode;
      this.SectionNumber = sectionNumber;
    }

As seen from the code, the programmer intended to change the values of an object's properties according to the parameters accepted in the method, but mistakenly assigned to the 'QuestionId' property its own value instead of the 'questionId' argument's value.

The correct version of this code should have looked as follows:

    public GridAnswerData(
      int questionId, int answerId, int sectionNumber,
      string fieldText, AnswerTypeMode typeMode)
    {
      this.QuestionId = questionId;
      this.AnswerId = answerId;
      this.FieldText = fieldText;
      this.TypeMode = typeMode;
      this.SectionNumber = sectionNumber;
    }

You can look at examples of errors detected by the V3005 diagnostic.