C# 方法和属性

C# Methods and Properties

何时在 C# 中使用方法和属性? 他们可以做同样的事情,但何时同时使用它们。 也可以通过 C# 属性 而不是单个值来设置整个对象吗?

An proppertie is just a short hand and will create at the background an public get method and a public set method and a private field to store the value.

// example propertie
public string Name { get; set; }

// at run time it is the same as:
private string Name;

public string GetName(){
  return this.Name;
}

public string SetName(string name){
  this.Name = name;
}

见图片:样本class在代码中只有一个属性,但是如果你使用反射让所有成员离开样本class你将看到在 运行 时这些方法已生成但在代码中不可见。

set_name() get_name()

'notice the private field Name is not shown because it is private and not visable for the outside, but is genrated.'

A 属性 或多或少是我们用来描述关于 class 的不同事物的东西。他们让我们定义 class 可以做什么,以及 class 本质上是什么。考虑以下因素:

    namespace Example
    {
        public class Person
        {
            public string Name { get; set; }
            public int Age { get; set; }
            public DateTime Birthday { get; set; }
        }
    }

姓名、年龄和生日将被视为人物的属性 class。他们定义了一个人是什么,并为我们提供了一种赋予 class 价值的方法。然后将使用一种方法对属性执行各种操作。您可以编写一个方法来获取或设置 属性 的值,例如:

public string GetName()
{
    return Name;
}

public void SetName(string name)
{
    Name = name;
}

然而,考虑到名称 属性 是 public,这意味着只要我们创建 Person class 的实例就可以访问它,这些将毫无意义。如果我们想设置名称 属性,但将其保密,则可以使用上述方法。方法的另一个例子是,如果我们想要一种方法来创建一个人的新实例 class。默认情况下 visual studio 会让你像这样实例化一个新的 Person 对象:

Person jim = new Person();

但是我们也可以编写自己的 "constructor" 方法来允许我们创建一个新的 Person 并同时设置它的属性。

public Person(string name, int age, DateTime birthday)
{
    Name = name;
    Age = age;
    Birthday = birthday;
}

现在我们有一种简单、流线型的方法来实例化一个使用构造函数方法的新 Person 对象,我们可以像这样创建一个新的 Person 对象:

Person jim = new Person("Jim", 25, DateTime.Today);

但是方法的使用不止于此。由于 DateTime 是我们表示生日的方式 属性,我们可以编写一个方法将字符串转换为适当的 DateTime。

public DateTime ConvertToDateTime(string date)
{
      DateTime temp;

      DateTime.TryParse(date, out temp);

      return temp
}

现在我们可以将构造函数更改为如下所示:

public Person(string name, int age, string birthday)
{
    Name = name;
    Age = age;
    Birthday = ConvertToDateTime(birthday);
}

并且可以像这样实例化一个新的 Person 对象:

Person jim = new  Person("Jim", 25, "1/10/1995");

最后一点,正如@vivek nuna 所说,找一本好书!我在以前的 C# classes 中使用过的一个很棒的是 Murach's book on C#. Also MSDN.com has all the documentation you would need to learn how to code in C#. Try this link to learn more about properties or this link to learn more about methods. Finally, an excellent tutorial I found to learn C# is Scott Lilly's Guide to C#。您不仅将学习 C# 的来龙去脉,还将构建一个非常简洁的基于文本的角色扮演游戏!