c#嵌套访问器
本文关键字:访问 嵌套 | 更新日期: 2023-09-27 18:16:21
我知道怎么做:
Class class = new Class();
class.Accessor
我不知道该怎么做:
class.Property.Accessor
class.Property.Subproperty.Accessor
class.Property.Subproperty.YetAnotherSubproperty.Accessor
例子类比:
ListBox.Items.Count
用一个类比来帮助解释(不要从字面上理解),我知道如何创建ListBox,我知道如何创建Count,但我不知道如何创建Items
类似
class Animal
{
// gets the heart of this animal
public HeartType Heart
{
get
{
...
}
}
}
class HeartType
{
// gets the number of beats per minute
public int Rate
{
get
{
...
}
}
}
对于var a = new Animal();
给出的a
你可以说
int exampleRate = a.Heart.Rate;
好吧,你的问题很难懂,但我会试试的。
子属性只是具有自己属性的其他类(或静态类)的实例。
的例子:
class Class1
{
public Class2Instance{get;set;}
public Class1()
{
Class2Instance =new Class2();
}
}
class Class2
{
public string Greeting = "Hello";
}
//////
var c = new Class1();
Console.WriteLine(c.Class2Instance.Greeting);
我不确定我是否正确理解了你的问题。但是在您的类比中,Items是ListBox的属性/字段,该属性/字段的类型可以是某个集合。这个集合有Count属性
我最近回答了类似的问题,但它更多地与称为FluentInterface风格的方法链有关。
在你的情况下,似乎你正在试图调用属性/公共字段,这是类型的一部分;这些类型以嵌套的方式被引用。考虑到这一点,这个想法可以演示如下:
class Program
{
static void Main(string[] args)
{
var one=new LevelOne();
Console.WriteLine(one.LevelTwo.LevelThree.LastLevel);
}
}
internal class LevelOne
{
public LevelOne()
{
LevelTwo = LevelTwo ?? new LevelTwo();
}
public LevelTwo LevelTwo { get; set; }
}
internal class LevelTwo
{
public LevelTwo()
{
LevelThree = LevelThree ?? new LevelThree();
}
public LevelThree LevelThree { get; set; }
}
internal class LevelThree
{
private string _lastLevel="SimpleString";
public String LastLevel { get { return _lastLevel; } set { _lastLevel = value; } }
}