这是怎么定义的?

本文关键字:定义 | 更新日期: 2023-09-27 18:13:36

这是一个类属性数组还是一个属性类数组?我如何在c#中访问每一行而不是类中的每个元素?谢谢!

public partial class AdvancedSearchResult {
    private SearchResults[] searchResultsField;
    /// <remarks/>
    **[System.Xml.Serialization.XmlElementAttribute("SearchResults")]
    public SearchResults[] SearchResults { <-------NOT SURE HOW TO DEFINE THIS
        get {
            return this.searchResultsField;
        }
        set {
            this.searchResultsField = value;
        }
    }**

public partial class SearchResults {
    private int dIDField;
    private bool dIDFieldSpecified;
    private int dRevisionIDField;
    ...............etc

这是怎么定义的?

首先,我要把你的类写得短一点:

public partial class AdvancedSearchResult 
{
    [System.Xml.Serialization.XmlElementAttribute("SearchResults")]
    public SearchResults[] SearchResults 
    {
        get 
        set 
    }
}

第二,你可以赋值:

AdvancedSearchResult results = new AdvancedSearchResult();
results.SearchResults = new[]
{
    new SearchResults { ... },
    new SearchResults { ... },
    etc.
}

要检索这些值,可以使用索引:

SearchResults firstResult = results.SearchResults[0];

或使用枚举数:

foreach(SearchResults sr in results.SearchResults)
{
    // Something with sr.
}

如果我理解正确:

    不要把你的属性命名为SearchResults,因为那是类的名字称之为searchResults
  1. 像这样访问"行":searchResults[rowNumber] .

searchResultsField是一个数组,其中每个成员都是SearchResults类实例。事实上也是你的财产。所以它是一个类实例数组

要访问属性中的字段,您可以使用searchResults[rowNumber].fieldName(假设它们是公共字段)。

由于你的评论 -这里有一个反射的简单例子:

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
        MyClass myClass = new MyClass() { i = "a", j = "b" };
        FieldInfo[] infos = typeof(MyClass).GetFields();
        foreach (FieldInfo info in infos)
            Text += info.GetValue(myClass);
    }
}

class MyClass
{
    public string i;
    public string j;
}

并在顶部添加:

using System.Reflection;

SearchResults是类AdvancedSearchResult的属性。它获取/设置名为searchResultsField的SearchResults项的私有数组。

按如下方式访问:

var result=new AdvancedSearchResult();
foreach(var item in result.SearchResults)
{  var myId= item.dIDField; 
   var isSpecified=item.dIDFieldSpecified;
   ...
}