在节目中,我正在控制台上写一只狗的品种。
哪种方法最好?为什么?
我认为第一种方式做的操作较少,但要做到这一点,我必须将变量声明为公共。
将声明为私有并从类似我在第二个写作线中的方法返回数据可能是更好的选择吗?
我想了解哪种方法最适合考虑软件的每个重要方面
class Program
{
static void Main(string[] args)
{
Dog fuffy = new Dog("Fuffy", "Armant");
Console.WriteLine(fuffy.breed);
Console.WriteLine(fuffy.getBreed());
}
}
class Dog
{
public string name;
public string breed;
public Dog(string name, string breed)
{
this.name = name;
this.breed = breed;
}
public string getBreed()
{
return this.breed;
}
}
编辑:
使用getter和this方法之间是否存在真正的区别?
getter不是一种“隐藏”的方式来编写和执行该方法吗?
与方法相比,吸气剂是否能提供更好的预防?
class Dog
{
public string name { get; }
public string breed { get; }
public Dog(string name, string breed)
{
this.name = name;
this.breed = breed;
}
public string getBreed()
{
return this.breed;
}
}
答案 0 :(得分:4)
" best"方法是使用C#语言功能,即属性:
class Dog
{
public string Name {get;} // read-only property (can be set in constructor)
public string Breed {get;}
public Dog(string name, string breed)
{
this.Name = name;
this.Breed = breed;
}
}
答案 1 :(得分:2)
在C#中,我们有一个名为properties的语言结构,我认为它们最合适。通常,属性用于公开对象状态,优先于方法,并且可以将它们设置为只读或读写。
class Dog
{
public string Name { get; private set; }
public string Breed { get; private set; }
public Dog(string name, string breed)
{
Name = name;
Breed = breed;
}
}
C#中的属性有很多种,所以我建议在文档中阅读它们。
答案 2 :(得分:1)
通常,方法表示操作,属性表示数据。 在这种情况下,我会使用Property,因为属性的值存储在进程内存中,属性只提供对值的访问。
使用属性而不是方法
在以下情况下使用方法而不是属性。
阅读本文以获取有关代码示例的更多信息。
答案 3 :(得分:0)
您可以使用属性来封装字段。
class Program
{
static void Main(string[] args)
{
Dog fuffy = new Dog("Fuffy", "Amarant");
Console.WriteLine(fuffy.Name);
Console.WriteLine(fuffy.Breed);
}
}
class Dog
{
private string name;
public string Name
{
get { return name; }
set { name = value; }
}
private string breed;
public string Breed
{
get { return breed; }
set { breed = value; }
}
public Dog(string pName, string pBreed)
{
Breed = pBreed;
Name = pName;
}
}
答案 4 :(得分:0)
我会说他们都不是最好的#34;但我会使用C#内置的properties:
public string Breed {get;set;}
如果您想阻止设置品种,可以删除set
:
public string Breed {get;}
在您的示例中,getBreed
是只读的,相当于我的第二个示例。
将您的课程修改为如下所示:
class Program
{
static void Main(string[] args)
{
Dog fuffy = new Dog("Fuffy", "Armant");
Console.WriteLine(fuffy.breed); //Prints Fuffy
Console.WriteLine(fuffy.breed = "Muffy"); //Prints Muffy
Console.WriteLine(fuffy.breed_readonly = "Muffy"); //World ends in exception
}
}
class Dog
{
public string name {get;set;}
public string breed {get;set;}
public string name_readonly {get;}
public string breed_readonly {get;}
public Dog(string name, string breed)
{
this.name = name;
this.breed = breed;
this.name_readonly = name;
this.breed_readonly = breed;
}
}