62,046
社区成员
发帖
与我相关
我的任务
分享
people p=new pelple();
Type t = p.GetType();
foreach (PropertyInfo pi in t.GetProperties())
{
object value1 = pi.GetValue(phoneCaptchaLog, null);//用pi.GetValue获得值
if(people[name]== pi.Name)//这段该怎么写
{
people[name]=value1;
}
}
static void Main(string[] args)
{
Test t = new Test();
t.Id = 1;
t.Age = 10;
t.Name = "test";
Test t1 = new Test();
t1.Id = 2;
t1.Age = 120;
t1.Name = "hello";
Console.ReadLine();
}
public class Test
{
private int id;
private string name;
private int age;
public int Id { get => id; set => id = value; }
public string Name
{
get => name;
set
{
if (value !="test") name = value;
else Console.WriteLine("name=test");
}
}
public int Age {
get => age;
set {
if (value > 15) age = value;
else Console.WriteLine("age<=15");
}
}
}
结果:
//以字符串为下标的索引器
public class IDXer2
{
private Hashtable name = new Hashtable();
//以字符串为下标的索引器
public string this[string index]
{
get
{
return name[index].ToString();
}
set
{
name.Add(index, value);
}
}
}
public class Program
{
static void Main(string[] args)
{
//以字符串为下标的索引器
IDXer2 indexer2 = new IDXer2();
indexer2["A01"] = "张三";
indexer2["A02"] = "李四";
Console.WriteLine(indexer2["A01"]);
Console.WriteLine(indexer2["A02"]);
Console.ReadKey();
}
}
[/quote]
//是下面的意思,不过已经有间接方法了
public class IDXer2
{
string id;
}
string name;
if(name=="id")
{
IDXer2[name]=XXX;//此时也即使对IDXer2.id=XXX赋值
}
//以字符串为下标的索引器
public class IDXer2
{
private Hashtable name = new Hashtable();
//以字符串为下标的索引器
public string this[string index]
{
get
{
return name[index].ToString();
}
set
{
name.Add(index, value);
}
}
}
public class Program
{
static void Main(string[] args)
{
//以字符串为下标的索引器
IDXer2 indexer2 = new IDXer2();
indexer2["A01"] = "张三";
indexer2["A02"] = "李四";
Console.WriteLine(indexer2["A01"]);
Console.WriteLine(indexer2["A02"]);
Console.ReadKey();
}
}
using System;
namespace IndexerApplication
{
class IndexedNames
{
private string[] namelist = new string[size];
static public int size = 10;
public IndexedNames()
{
for (int i = 0; i < size; i++)
{
namelist[i] = "N. A.";
}
}
public string this[int index]
{
get
{
string tmp;
if( index >= 0 && index <= size-1 )
{
tmp = namelist[index];
}
else
{
tmp = "";
}
return ( tmp );
}
set
{
if( index >= 0 && index <= size-1 )
{
namelist[index] = value;
}
}
}
public int this[string name]
{
get
{
int index = 0;
while(index < size)
{
if (namelist[index] == name)
{
return index;
}
index++;
}
return index;
}
}
static void Main(string[] args)
{
IndexedNames names = new IndexedNames();
names[0] = "Zara";
names[1] = "Riz";
names[2] = "Nuha";
names[3] = "Asif";
names[4] = "Davinder";
names[5] = "Sunil";
names[6] = "Rubic";
// 使用带有 int 参数的第一个索引器
for (int i = 0; i < IndexedNames.size; i++)
{
Console.WriteLine(names[i]);
}
// 使用带有 string 参数的第二个索引器
Console.WriteLine(names["Nuha"]);
Console.ReadKey();
}
}
}
当上面的代码被编译和执行时,它
switch(name){
case "name" :
people.name=pi.Name;
break;
......................
}