这可能只是我表现出我缺乏知识/糟糕的编程习惯,但我很想知道是否:a)这已经存在b)如果它不存在,如果这样做是不好的编程习惯
但这是我的问题:
假设我有一个类,我们称之为"计算机",它包含公司中所有计算机的数据.现在,恰巧这家公司拥有数千台戴尔电脑和数千台惠普,而不是别的.(再次请在这里坚持我,这只是一个例子来说明我的观点)
现在,我可以按如下方式定义我的类:
Public Class Computer
Dim Type as string
Dim SerialNumber as string
Dim User as String
...
End Class
Run Code Online (Sandbox Code Playgroud)
现在,在我的代码中,我创建了两个列表:
Dim DellComps as new list(of computer)
Dim HPComps as new list(of computer)
Run Code Online (Sandbox Code Playgroud)
显然,对于DellComps他们来说,所有人都将拥有.Type = "Dell",而且HPComps,所有人都将拥有.Type = "HP"
现在,我知道我可以很容易地在构造函数中设置这个变量,但是我想知道是否有更聪明的方法在类中声明变量 - 类似于VB Shared/C#Static语句,其中所有类的实例分享相同的变量.
我的想法是:
谢谢,我希望我的要求是有道理的!
你最接近的是使用abstract关键字.您将有一个抽象类Computer,会再由具体的子类覆盖DellComputer和HpComputer.粗略的(C#)示例是:
public abstract class Computer
{
public string Type { get; protected set; }
}
public class DellComputer : Computer
{
public DellComputer()
{
this.Type = "Dell"
}
}
Run Code Online (Sandbox Code Playgroud)
您通常不希望在大量实例中共享单个变量,因为这会破坏封装,并且在尝试单元测试代码时更加逼真地成为一个大问题.所以你所谈论的纯粹形式并不是一个非常好的主意,但实际的用例非常普遍,并且肯定得到支持.
编辑:作为下面的评论的一部分,这是一个使用非常密切相关的虚拟关键字的不同方法!
public abstract class Computer
{
public virtual string Type { get; }
}
public class DellComputer : Computer
{
public override string Type
{
get {
return "Dell";
}
}
}
Run Code Online (Sandbox Code Playgroud)