何时在C#中使用方法和属性? 他们可以做同样的事情,但什么时候使用它们。 还可以通过C#Property设置整个对象而不是单个值。?
答案 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()
'注意私人字段名称未显示,因为它是私有的,外部不可见,但是已生成。'