У меня вопрос о C# Dictionary в классе i. Проблема в том, что когда я заполняю словарь с помощью setValue (String str, object obj), все работает нормально. Но когда я запрашиваю значение из словаря (например, getX()), debuggins сообщает мне, что значение dictionaty = 0.C# Словарь пуст после вызова новой функции
Я не уверен, что я здесь делаю неправильно.
class KRLFrame: KRLStruct
{
public Dictionary<string, double> dict = new Dictionary<string, double>();
public KRLFrame(String name)
: base(name, new String[] { "X", "Y", "Z", "A", "B", "C" })
{
}
public KRLFrame setX(double d)
{
dict["X"] = d;
return this;
}
public Double getX()
{
return dict["X"];
}
//@Overrides
public override void setValue(String str, object obj)
{
String s = Convert.ToString(obj);
s = s.Replace('.', ',');
dict[str] = Convert.ToDouble(s);
}
public override Object getValue()
{
return dict;
}
}
Функция setValue вызывается из базового класса. Основной класс вызывает эти функции, как это:
KRLFrame base1 = new KRLFrame("BASE_DATA[1]");
base1.setX(10);
client.readVariable(base1); //Code for reading a variable, in different class
Console.WriteLine("BASE_DATA[1]: " + base1.getStringValue());
Double d = base1.getX();
На мой взгляд base1 типа KRLFrame будет содержать словарь под названием Dict, который будет связан с Base1. поэтому вызов base1.getX() должен привести к значению словаря с ключом «X» правильно?
Спасибо за помощь! ;)
KRLStruct класс использует folowing функцию:
abstract class KRLStruct : KRLVariable
{
private String[] nodes;
public KRLStruct(String name, String[] nodes)
:base(name)
{
this.nodes = nodes;
}
KRLVariable как это:
abstract class KRLVariable
{
private int id;
private String name;
Random rnd = new Random();
String strValue;
public KRLVariable(string name)
{
this.name = name;
this.id = rnd.Next(1, 999999) ;
}
Вы можете разместить класс KRLStruct? – MadOX
Нет использования класса 1 в коде, который вы предоставили –
Как 'KRLFrame' относится к' Class1' –