struct Package
{
Public int[] intvalues;
Public char[] charvalues;
Public string strvalue;
}
이제는 이름이 strquery 인 패키지의 intvalues 값을 가져 가고 싶습니다.
제가 시도한만큼,이 작업을하지 못했습니다
(Package)strquery.strvalue
제발 도와주세요
struct Package
{
Public int[] intvalues;
Public char[] charvalues;
Public string strvalue;
}
이제는 이름이 strquery 인 패키지의 intvalues 값을 가져 가고 싶습니다.
제가 시도한만큼,이 작업을하지 못했습니다
(Package)strquery.strvalue
제발 도와주세요
글쎄, 그렇게 할 수는 없습니다. 왜냐하면 문자열은 구조체 과 같은 명시 적 캐스팅 연산자로 정의되지 않았기 때문입니다.
또한 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(" ");
}
}
당신은 패키지 유형에 문자열 타입 캐스팅 어차피 도와주세요. strvalue 값을 얻으려면 먼저 패키지 struct 객체를 만들어야합니다.
Package package = new Package();
...
string value = package.strvalue;
첫째, 이해가되지 않기 때문에 코드를 명확히하십시오.
둘째, 구조체를 사용하는 이유는 무엇입니까? 당신은 구조체가 필요하다는 것을 확신합니까? 수업이 아니라? 그 주제에 들어가는 StackOverflow의 다른 질문을보십시오.
셋째
(Package)strquery.strvalue
유효한 코드가 아닙니다. strquery는 문자열이며 패키지 구조체에 캐스팅 될 수 없습니다. 이것들은 어느 레벨에서나 서로 관련된 객체가 아닙니다. (제외 그들은 둘 다 객체 클래스에서 파생 것을) 나는 intvalues의 을의 가치를 먹고 싶어 당신이 "질문"
에 따라 패키지의 모음을 가정한다면
넷째 이름이 strquery 인 패키지 나는 당신이 int 값이 키에 관련 지을 수있는 것이고 종류의 사전이 필요하다 표시되는 질문을 이해하면
는이
int[] foundValues;
foreach(Package pack in packageCollection)
{
if(pack.strvalue == strquery)
{
foundValues = pack.intvalues;
break;
}
}
같은 것을 원한다.당신은 다음과 같이 당신의 구조체를 변경 한 경우 :
다음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];
그러나 이것은 정말로 단지를 열거한다 컬렉션 키와 당신의 질문을 기반으로 가치를 찾을 수있는 몇 가지 설명을 실제로 사용할 수 있습니다. 어떤 코드를 사용할 지 제안하지 않고 무엇을 하려는지 게시 해주세요.
패키지 구조체를 사용하여 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
}
이것은 당신과 같이 문자열로 패키지 구조체를 사용할 수 있도록합니다 :
string str = "this is a test";
Package pkg = new Package(str);
pkg.Get_charvalues();
pkg.Get_intvalues(); //etc.
그 코드는 아마도 당신이 우리에게 좀 더 배경 정보를 제공해야합니다, 전혀 의미가 없습니다. –
일부 컨테이너에 패키지 구조체 모음이 저장되어 있다고 가정합니다. 당신이 묻는 질문은 실제로 패키지 구조가 아니라 컨테이너에 적용됩니다. – qid
내가 알 수있는 한, 구조체는 실제로 C와 같은 다른 언어에 대한 하위 호환성/친숙성을 위해서만 제공됩니다. 대신 클래스를 사용하십시오. –