我需要迭代数组值和引用类对象..像这样..我怎么用C#.net ??
在C#中如何使用String ??
引用类对象...即
public class GlobalVars
{
private static Object[] _prevval1;
public static Object[] prevval1
{
get { return _prevval1; }
set { _prevval1 = value; }
}
}
string[] str = new string[]'
str[0] = "val1";
string value = Convert.toString(GlobalVars.prev + str[0] + [0].toString());
这(上面的最后一行)不起作用..怎么做呢?
我刚刚使用CASE声明,欢迎提出意见或建议....感谢您的帮助和建议。
string[] curArray = new string[6];
curArray[0] = "AUD/USD";
curArray[1] = "EUR/USD";
curArray[2] = "GBP/USD";
curArray[3] = "USD/CAD";
curArray[4] = "USD/CHF";
curArray[5] = "USD/JPY";
for (int i = 0; i < curArray.Length; i++ )
{
// Get Symbols
DataRow dtrow = dt.NewRow();
dtrow["Symbol"] = curArray[i].ToString();
string sym = curArray[i].ToString();
// Get Ask Price
string ask = "-";
dtrow["AskPrice"] = ask.ToString();
if (GlobalVars.prevEURUSD != null)
{
switch (sym)
{
case "AUD/USD":
dtrow["AskPrice"] = GlobalVars.prevAUDUSD[3].ToString();
break;
case "EUR/USD":
dtrow["AskPrice"] = GlobalVars.prevEURUSD[3].ToString();
break;
case "GBP/USD":
dtrow["AskPrice"] = GlobalVars.prevGBPUSD[3].ToString();
break;
case "USD/CAD":
dtrow["AskPrice"] = GlobalVars.prevUSDCAD[3].ToString();
break;
case "USD/CHF":
dtrow["AskPrice"] = GlobalVars.prevUSDCHF[3].ToString();
break;
case "USD/JPY":
dtrow["AskPrice"] = GlobalVars.prevUSDJPY[3].ToString();
break;
}
}
答案 0 :(得分:1)
您的问题尚不清楚,但看起来您正在尝试创建一个存储对象的集合,并使用字符串键编制索引。
有几种不同的.NET类可以帮助您。可能最常见的是System.Collections.Specialized.NameValueCollection
和System.Collections.Generic.Dictionary
。如果您的收藏中的项目属于同一类型,我建议Dictionary
。如果它们可以有多种不同类型,那么您可能会更密切地关注NameValueCollection
。
答案 1 :(得分:0)
嗯,你可以做到以下几点:
string value = Convert.toString(GlobalVars.prev.ToString() + str[0]);
但我不是那就是你要找的东西,因为那样(通常)只会给你一个类型名称。如果您可以控制将在该数组中的类,则可以覆盖对象中的ToString并显示您想要的任何内容:
override string ToString()
{
return "MyObject|FirstName:" + this.FirstName + "|LastName:" + this.LastName; // etc.
}
但如果你不这样做,那么我唯一可以提出的建议就是串行器。但即使这样,对象也必须支持。除此之外,您可以反映属性并以字符串格式表示它们。
这就是你要找的东西吗?
答案 2 :(得分:0)
您需要在GlobalVars上使用反射来获取PropertyInfo(例如http://msdn.microsoft.com/en-us/library/1zkfcy34(v=VS.95).aspx)和GetMethod以获取值。不是很复杂..我确信网上有例子。查找Reflection,PropertyInfo,GetGetMethod ..
答案 3 :(得分:0)
为什么不使用Dictionary<string, object>
?
您可以访问Keys属性来遍历密钥。
修改强> 根据您的评论:
class ProductPriceInfo
{
public string ID {get;set;}
public DateTime PriceTimeStamp {get;set;}
public decimal Price {get;set;}
}
...
Dictionary<string, ProductPriceInfo> _prices = new Dictionary<string, ProductPriceInfo>();
// Adding a price
_prices.Add(myProduct.ID, myProduct);
// updating the price
if(_prices[myProductv2.ID].PriceTimeStamp < myProductv2.PriceTimeStamp)
{
_prices[myProductv2.ID].PriceTimeStamp = myProductv2.PriceTimeStamp;
_prices[myProductv2.ID].Price = myProductv2.Price;
}
那会有用吗?