我在c#中有下一个代码:
var qry = db.knex
.select(db.knex.raw("array_agg(t2.id) as session_ids, date_trunc('hour', t2.start_timestamp) as hour"))
.count('*')
.from('sessions as t2')
.groupByRaw("date_trunc('hour', t2.start_timestamp)")
.orderBy(db.knex.raw("date_trunc('hour', t2.start_timestamp)"));
class Person
{
private Person variable; // what this line mean
....
}
的类型对于“人”是什么意思? ?它尚未完全定义......为什么会使用这样的类?
答案 0 :(得分:0)
类具有自己类型的变量是很常见的。标准情况 - 二叉树的元素:
class TreeNode
{
public int Data {get;set;}
public TreeNode Left {get;set;}
public TreeNode Right {get;set;}
}
这意味着类的实例以某种方式将引用到与其相关的其他实例。通常它是某种亲子(如上面的样本)或所有权关系(即CarComponent
有更多CarComponent
类似引擎有阀门。
至于这种构造的命名 - 没有通用的名称。有时使用“递归类”或“自引用类”,但我的知识没有正式名称。
注意:class
是引用类型,添加对与field相同类型的实例的引用是完全正常的。请注意,这不适用于struct
(因为数据必须是同一对象的一部分)。