C# cannot convert method to non delegate type

后端 未结 7 1838
猫巷女王i
猫巷女王i 2020-12-08 07:12

I have a class called Pin.

public class Pin
{
    private string title;

    public Pin() { }

    public setTitle(string title) {
        this.         


        
7条回答
  •  孤街浪徒
    2020-12-08 07:24

    You need to add parentheses after a method call, else the compiler will think you're talking about the method itself (a delegate type), whereas you're actually talking about the return value of that method.

    string t = obj.getTitle();
    

    Extra Non-Essential Information

    Also, have a look at properties. That way you could use title as if it were a variable, while, internally, it works like a function. That way you don't have to write the functions getTitle() and setTitle(string value), but you could do it like this:

    public string Title // Note: public fields, methods and properties use PascalCasing
    {
        get // This replaces your getTitle method
        {
            return _title; // Where _title is a field somewhere
        }
        set // And this replaces your setTitle method
        {
            _title = value; // value behaves like a method parameter
        }
    }
    

    Or you could use auto-implemented properties, which would use this by default:

    public string Title { get; set; }
    

    And you wouldn't have to create your own backing field (_title), the compiler would create it itself.

    Also, you can change access levels for property accessors (getters and setters):

    public string Title { get; private set; }
    

    You use properties as if they were fields, i.e.:

    this.Title = "Example";
    string local = this.Title;
    

提交回复
热议问题