2016-04-04 13 views
4

Jedes Mal wenn ich this._Something verwende, ist meine this. hellblau und grün unterstrichen. Und ich kann Wert 101 nach F5 nicht bekommen. Stattdessen bekomme ich den Wert 0. Irgendwelche Hilfe?"Dieser" Operator funktioniert nicht

class Student 
{ 
    private int _ID; 

    public void SetID(int Id) 
    { 
     if (Id <= 0) 
     { 
      throw new Exception("It is not a Valid ID"); 
      this._ID = Id; 
     } 
    } 

    public int GetID() 
    { 
     return this._ID; 
    } 
} 

class Program 
{ 
    public static void Main() 
    { 
     Student C1 = new Student(); 
     C1.SetID(101); 
     Console.WriteLine("Student ID = {0}", C1.GetID()); 
    } 
} 
+1

'this._ID = Id;' sollte außen sein das 'if {}' sonst wird es nie geschrieben. Bewegen Sie den Mauszeiger über das unterstrichene Symbol/sehen Sie am linken Rand und VS wird Ihnen sagen, worüber es wimmert. –

+0

Ok, aber warum ist es in meinem Visual Studio hellblau? –

+0

@ZvezdaBre sehe meine Antwort – wudzik

Antwort

3

Sie zuweisen _ID nur, wenn (Id < = 0), um Ihren Code zu ändern:

ist
public void SetID(int Id) 
{ 
    if (Id <= 0) 
    { 
     throw new Exception("It is not a Valid ID"); 
    } 
    _ID = Id; 
} 

Ihr this Anruf hell, weil VS sagt Ihnen, dass Sie nicht brauchen benutze es hier. Sie haben keine lokale Variable mit demselben Namen. Lesen Sie mehr über thishere

BTW Sie Eigenschaften mit Unterstützung Feldern, zum Beispiel here

3

vorschlagen lesen sollte ich beideget und set Methoden in einzelne Eigenschaft Redesign; Sie haben keine Notwendigkeit, Java in C# zu imitieren:

class Student { 
    private int _ID; 

    public int ID { 
    get { 
     return _ID; 
    } 
    set { 
     // input validation: 
     // be exact, do not throw Exception but ArgumentOutOfRangeException: 
     // it's argument that's wrong and it's wrong because it's out of range 
     if (value <= 0) 
     throw new ArgumentOutOfRangeException("value", "Id must be positive"); 

     _ID = value; 
    } 
    } 
} 

...

public static void Main() 
{ 
    Student C1 = new Student(); 
    C1.ID = 101; 
    Console.WriteLine("Student ID = {0}", C1.ID); 
} 
1

Versuchen Sie, diese

class Student 
{ 
    private int _ID; 

    public int ID 
    { 
     get{ return _ID;} 

     set { 
      if (value <= 0) 
       throw new Exception("It is not a Valid ID"); 
      _ID = value; 
      } 

    } 


} 

class Program 
{ 
    public static void Main() 
    { 
     Student C1 = new Student(); 
     C1.ID=101; 
     Console.WriteLine("Student ID = {0}", C1.ID); 
    } 
} 
+0

Ja, Danke. Ich habe es vergessen. – MNF

Verwandte Themen