我正在玩一个充当private List<T>
属性的公共接口的类。我注意到List<>
类有一个属性Length
,它告诉你它包含多少元素。
这是一个你无法改变的属性,并且在intellisense上会出现一个旁边的扳手图像。它不是一种方法,因为在编码名称后不需要()
。
之前我见过这种类型的属性,但从未在我自己的类中使用它们。有没有人知道如何在我的自定义类中复制Length
?
谢谢, 标记
答案 0 :(得分:4)
这是一个没有制定者的财产。如果您要换行List<T>
,则只需将其用作自己的计数:
public int Count {get {return _myPrivateList.Count; } }
如果你正在使用C#6,你可以使用它:
public int Count => _myPrivateList.Count;
答案 1 :(得分:1)
如果您目前有一个包含List
的类,那么您可以通过公开一个只使用该属性的属性来利用其上已存在的Count
属性:
public class YourExampleList<T>
{
// Example of your inner list
private List<T> _list { get; set; }
// Use the Count property to expose a public "Length" equivalent
public int Length { get { return _list.Count; } }
}
答案 2 :(得分:1)
这实际上不是一种方法,而是属性。
所以你可以在课堂上定义
private List<string> myList = new List<string>();
public int NumberOfElements
{
get { return this.myList.Count; }
}
将定义普通属性,例如
public bool ColumnNames { get; set; }
答案 3 :(得分:1)
(exec-sql-file "BR101" 123456)
现在,您可以在自定义类上创建自己的实现。类似的东西:
List<T> myList = new List<T>();
答案 4 :(得分:1)
我必须承认你的问题有点模糊。听起来你想知道如何创建只读属性/属性。这可以通过为类的私有字段成员创建属性包装器来实现,如下所示:
class MyCustomClass
{
private int _length;
public int Length
{
get { return _length; }
}
}
答案 5 :(得分:1)
比如说你有一个这样的类:
public class MyClass
{
private string _str;
public MyClass()
{
_str = "Sample String";
}
public int Length
{
get
{
return _str.Length;
}
}
}
这就是发生的事情:
_str
的类的开头声明了一个私有字段。"Sample String"
。Length
的公共属性int
,并且只给它一个get
访问者。与您的示例一样,这只允许读取值,而不是设置。get
内我们告诉它返回_str
长度的值。使用与此类似的代码,您可以为任何自定义类实现Length
属性。