我是C#
的新手我有一个类似
的结构struct Package
{
Public int[] intvalues;
Public char[] charvalues;
Public string strvalue;
}
现在我有一个字符串
string strquery;
我想获取名称为strquery的Package的intvalues值。
据我所知,这不起作用
(Package)strquery.strvalue
请帮忙
答案 0 :(得分:2)
好吧,你不能做那样的事情。因为字符串没有定义任何显式的转换操作符,例如struct Package 。
此外,strquery.strvalue完全错误,因为字符串没有这样的字段。
你可以试试Phaedrus所说的。
从你所说的到现在为止,我认为你正在做这样的事情:
List<Package> listOfPackages =new List<Package>();
// You fill up here the list
foreach (Package pkg in listOfPackages)
{
if (pkg.strvalue == strquery)
{
Console.WriteLine("found a package with items:");
// write the pkg.intvalues
for(int i=0;i<pkg.intvalues.Length;i++)
Console.Write(pkg.intvalues[i].ToString());
Console.WriteLine(" ");
}
}
答案 1 :(得分:0)
您无法将字符串类型强制转换为包类型。要获取strvalue的值,首先需要创建一个Package结构对象。
Package package = new Package();
...
string value = package.strvalue;
答案 2 :(得分:0)
首先,请澄清您的代码,因为它没有任何意义。
其次,问问自己为什么使用结构?你确定你需要一个结构吗?而不是一个班级?查看有关该主题的StackOverflow上的其他问题。
第三
(Package)strquery.strvalue
不是有效代码。 strquery是字符串,无法转换为包结构。这些不是任何级别的彼此相关的对象。 (除了它们都来自对象类)
第四,如果我假设你有一个基于你的“问题”的包的集合
我想取intvalues的值 名称为strquery的包。
你想要这样的东西
int[] foundValues;
foreach(Package pack in packageCollection)
{
if( pack.strvalue == strquery)
{
foundValues = pack.intvalues;
break;
}
}
答案 3 :(得分:0)
如果我理解它出现的问题,你需要一个字典,其中和int值将与一个键相关联。如果您将结构更改为如下所示:
class Package // I would recommend using a class
{
Public Dictionary<string, int> intValues;
}
然后你可以“查询”具有正确键的int值,如...
var strQuery = "intA";
var pakage = new Package()
pakage.intValues = new Dictionary<string, int>()
{
new KeyValuePair<string, int>("intA", 0),
new KeyValuePair<string, int>("intB", 0),
new KeyValuePiar<string, int>("intC", 9),
}
var result = pakage.inValues[strQuery];
但这只是枚举一个集合来根据一个键找到一个值,你的问题确实可以使用一些澄清。为什么不在不试图建议使用什么代码的情况下发布您尝试做的事情......
答案 4 :(得分:0)
好像您可能正在尝试使用Package结构解析String。如果是这样,那么你可以通过将结构转换为封装和操作字符串来尝试这样的事情。
struct Package {
public Package(string str) { //constructor
strvalue = str;
}
public int[] Get_intvalues() { // method version
// Convert stvalue into int array and return it.
return new[] {1,2,3}; //example
}
public char[] Get_charvalues() { // method version
return strvalue.ToCharArray();
}
public string strvalue; // string to work upon
}
这将允许您使用包含这样的字符串的Package结构:
string str = "this is a test";
Package pkg = new Package(str);
pkg.Get_charvalues();
pkg.Get_intvalues(); //etc.