C#方法和属性

时间:2016-11-18 17:23:49

标签: c# c#-4.0 methods properties c#-3.0

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

2 个答案:

答案 0 :(得分:3)

属性或多或少是我们用来描述类的不同内容。他们让我们定义一个类可以做什么,基本上是什么类是什么。请考虑以下事项:

sales.groupby([sales['Date'].dt.week, 'OracleNumber']).sum()

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

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

然而,考虑到Name属性是公共的,这将是毫无意义的,这意味着每当我们创建Person类的实例时都可以访问它。如果我们想要设置Name属性,则使用上述方法,但保持私有。另一个方法的例子是,如果我们想要一种方法来创建人类的新实例。默认情况下,visual studio将允许您实例化一个新的Person对象:

public string GetName()
{
    return Name;
}

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

但是我们也可以编写自己的“构造函数”方法,以允许我们创建一个新的Person并同时设置它的属性。

Person jim = new Person();

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

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

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

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

现在我们可以将构造函数更改为:

public DateTime ConvertToDateTime(string date)
{
      DateTime temp;

      DateTime.TryParse(date, out temp);

      return temp
}

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

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

最后一点,正如@vivek nuna所说,找一本好书!我在以前的C#类中使用的一个很棒的是Murach's book on C#。此外,MSDN.com还提供了学习如何使用C#编写代码所需的所有文档。试试这个link了解有关属性的更多信息,或者了解link以了解有关方法的更多信息。最后,我发现学习C#的优秀教程是Scott Lilly's Guide to C#。您不仅可以了解C#的细节,还可以构建一个非常简洁的基于文本的RPG!

答案 1 :(得分:0)

  

一个proppertie只是一个简短的手,将在后台创建一个公共get方法和一个公共集   方法和私有字段来存储值。

// 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;
}

参见图像:示例类在代码中只有一个属性,但如果使用Reflection从Sample类中获取所有成员,您将看到在运行时生成这些方法但不可见在代码中。

set_name() get_name()

'注意私人字段名称未显示,因为它是私有的,外部不可见,但是已生成。'

enter image description here