Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What is the C# equivalent to PHP's "self::"?

Tags:

c#

oop

In C# when I want to call a static method of a class from another static method of that class, is there a generic prefix that I can use such as PHP's self:: instead of the class name?

So in the below example, instead of saying Customer.DatabaseConnectionExists(), how can I say something like Self.DatabaseConnectionExists() so e.g. later if I change the name of the class I don't have to go change all the prefixes?

class Customer
{
    public string FirstName { get; set; }
    public string LastName { get; set; }

    public static Customer GetCurrentCustomer()
    {
        if (Customer.DatabaseConnectionExists())
        {
            return new Customer { FirstName = "Jim", LastName = "Smith" };
        }
        else
        {
            throw new Exception("Database connection does not exist.");
        }
    }

    public static bool DatabaseConnectionExists()
    {
        return true;
    }
}
like image 877
Edward Tanguay Avatar asked May 13 '09 12:05

Edward Tanguay


1 Answers

There's no real equivalent - you have to either specify the class name, i.e.

Customer.DatabaseConnectionExists()

or miss out the qualifier altogether, i.e.

DatabaseConnectionExists()

The latter style of calling is advisable since it's simpler and doesn't lose any meaning. Also, it's more inline with method calling in instances (i.e. calling by InstanceMethod() and not this.InstanceMethod(), which is overly verbose).

like image 59
Noldorin Avatar answered Oct 18 '22 14:10

Noldorin