У меня есть класс, который я инициализирую из другого класса внутри этого класса там свойство a с классом [] как тип, как инициализировать и заполнить этот массив значением { 1, «something»}, я не могу добраться до него, спасибо. В самом низу, что я пытался до сих пор кодируетсяНевозможно инициализировать массив или заполнить массив данными
/// Calss А
public partial class classA_1: object,System.ComponentModel.INotifyPropertyChanged {
private classB_1[] numberOfUnitField;
/// <remarks/>
[System.Xml.Serialization.XmlArrayAttribute(Order=0)]
[System.Xml.Serialization.XmlArrayItemAttribute("unitNumberDetail", IsNullable=false)]
public classB_1[] numberOfUnit {
get {
return this.numberOfUnitField;
}
set {
this.numberOfUnitField = value;
this.RaisePropertyChanged("numberOfUnit");
}
}
}
/// Класс B
public partial class classB_1 : object, System.ComponentModel.INotifyPropertyChanged {
private string numberOfUnitsField;
private string typeOfUnitField;
/// <remarks/>
[System.Xml.Serialization.XmlElementAttribute(DataType="integer", Order=0)]
public string numberOfUnits {
get {
return this.numberOfUnitsField;
}
set {
this.numberOfUnitsField = value;
this.RaisePropertyChanged("numberOfUnits");
}
}
/// <remarks/>
[System.Xml.Serialization.XmlElementAttribute(Order=1)]
public string typeOfUnit {
get {
return this.typeOfUnitField;
}
set {
this.typeOfUnitField = value;
this.RaisePropertyChanged("typeOfUnit");
}
}
public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
protected void RaisePropertyChanged(string propertyName) {
System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;
if ((propertyChanged != null)) {
propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
}
}
}
Кодовый до сих пор:
class Program
{
static void Main(string[] args)
{
ClassA_1 a = new ClassA_1();
Hashtable hash = new Hashtable();
hash.Add("1", "PX");
hash.Add("200", "RC");
int i = 0;
int d = hash.Keys.Count;
b.numberOfUnit = new classB_1 [d];
foreach (DictionaryEntry entry in hash)
{
//throws an error object not instantiated on the following code
b.numberOfUnit[i].numberOfUnits = entry.Key.ToString();
b.numberOfUnit[i].typeOfUnit = entry.Value.ToString();
i++;
}
}
}
Окончательный рабочий код:
Dictionary<int, string> hash = new Dictionary<int, string>();
hash.Add(1, "PX");
hash.Add(200, "RC");
b.numberOfUnit = hash.Select(h => new ClassB_1
{
numberOfUnits = h.Key.ToString(),
typeOfUnit = h.Value.ToString()
})
.ToArray();
'i' не ссылается в' Еогеасп 'кроме приращения, и у вас есть индексы' 0' и '1', жестко закодированные. Не думайте, что это то, что вы хотите. – crashmstr
изменен 0 и 1 на i – Developer
Почему массив инициализирован вне класса, в котором он живет? – RadioSpace