Jimmy D
Jimmy D

Reputation: 5376

Read property from the same class

In C# if I have this in a class:

public int SomeNumber
{
    get { return 6; }
}

How can I read (get) that number from a function in the same class if the function receives a variable with the same name? Example:

public bool SomeFunction(int SomeNumber)
{
    check if SomeNumber (the one passed to this function) == SomeNumber (the one from the public int)
}

Upvotes: 0

Views: 100

Answers (5)

mchicago
mchicago

Reputation: 800

Please run this code and you will get it.. Use this operator to refer the class level variale.

    public void CheckNumber(int SomeNumber)
    {
        Console.WriteLine(SomeNumber);
        Console.WriteLine(this.SomeNumber);
    }

Upvotes: 0

EtherDragon
EtherDragon

Reputation: 2698

Although the other suggestions do work well (and adhere to easier to read/maintain code), they don't directly answer your question. Given a class

public class SomeClass
{
  public int SomeNumber { get { return 6; } }
  ...

And a function with a parameter passed in

  public void SomeMethod(int SomeNumber)
  {
    // Your code here...

You can access the passed in parameter and property like so:

    if (SomeNumber > this.SomeNumber)
    {
      // Your results here

The distinction is that if you refer to just the variable name, it will use the variable from the same scope, i.e. the passed in variable. If you specify use "this." then you always get the class member.

Note: This does not work with Static classes, as there is no instance of the class. (Can't use "this.whatever") and you will be stuck. There are many coding Standards out there and some of them states that it is best practice to use the form "myVariable" for method parameters, "MyVariable" for property names, and _myVariable for property backing stores, to easily distinguish between them in your code.

Upvotes: 2

Tejs
Tejs

Reputation: 41256

You would simply invoke the property get in the method:

 public void MyMethod()
 {
      var someNum = SomeNumber; // basically, var somNum = this.SomeNumber;
 }

EDIT: To clarify with OP's edit:

 public void MyMethod(int someNumber) 
 // Change the naming of your parameter so it doesnt clash with the property
 {
       if(someNumber == SomeNumber)
          // Do Stuff
 }

Upvotes: 7

Henrik
Henrik

Reputation: 3704

public class FavoriteNumber
{

  public int SomeNumber
  {
    get { return 6; }
  }


  Public int Twelve()
  {
     return SomeNumber*2;
  }

}

Upvotes: 0

James Michael Hare
James Michael Hare

Reputation: 38417

Same as if it were a field:

public void SomeOtherFunction()
{
    var x = SomeNumber;
}

Upvotes: 3

Related Questions