2016-11-18 58 views
-2

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

+2

参考一本好书 –

+2

https://msdn.microsoft.com/en-us/library/ms229006(v=vs.110).aspx –

+0

[Properties vs Methods](http:// stackoverflow。 com/questions/601621/properties-vs-methods) – Tim

回答

2

一个属性是多了还是少了什么,我们用它来描述关于一类不同的事情。他们让我们定义一个班级可以做什么,基本上是什么班级。考虑以下几点:

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

姓名,年龄和生日将被认为是个人类的属性。他们定义了一个人的身份,并为我们提供了赋予班级价值的方法。然后将使用一种方法来完成各种属性。你可以写一个方法来获取或设置属性的值,如:

public string GetName() 
{ 
    return Name; 
} 

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

但是这些将是毫无意义的考虑Name属性是它可以在我们创建Person类的一个实例访问的公共意义。如果我们想要设置Name属性,但是保持私有属性,将会使用上述方法。另一个方法的例子是,如果我们想要一种方式来说创建人类的新实例。默认情况下,Visual Studio将让你实例,像这样一个新的Person对象:

Person jim = new 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是我们表示Birthday属性的方式,因此我们可以编写一个方法将字符串转换为适当的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娜娜说,找一本好书!在以前的C#类中使用过的很棒的一个是Murach's book on C#。另外,MSDN.com拥有您需要学习如何在C#中编写代码的所有文档。试试这个link了解更多关于属性或此link了解更多有关方法。最后,我发现学习C#的一个很好的教程是Scott Lilly's Guide to C#。您不仅可以学习C#的细节,还可以构建一个非常简洁且基于文本的RPG游戏!

0

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

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

见图片:样品类仅有一个proppertie代码,但如果你使用反射下车Sample类的所有成员,你会看到,在运行时产生的这些方法,但不在代码中可见。

set_name() get_name()

的通知私有字段名称没有显示,因为它是私有的,而不是visable对于外界,而是genrated。“

enter image description here