C# 怎么判断一个字符串是否是一个类的字段属性

例如 string s = "num"; 然后我有一个A类 class A { public int num {get;set;} } 如此我能通过s的值去访问A类的num字段么?
实例化下:A a=new A(); a.num=0;
怎么访问这个值?

第1个回答  推荐于2017-11-27
反射(Reflection)是.NET中的重要机制,通过放射,可以在运行时获得.NET中每一个类型(包括类、结构、委托、接口和枚举等)的成员,包括方法、属性、事件,以及构造函数等。还可以获得每个成员的名称、限定符和参数等。有了反射,即可对每一个类型了如指掌。如果获得了构造函数的信息,即可直接创建对象,即使这个对象的类型在编译时还不知道。
Type t = typeof(A);
FieldInfo field = t.GetField(s); //这里s就是你想要num

http://visionsky.blog.51cto.com/733317/368576/追问

大哥你这个方法不行,我之前就是这种方法。这个方式适合查询类的字段已赋值的,通过实例化赋值的这种方法查不到。

追答

public object ContainProperty(object instance, string propertyName)
{
if (instance != null && !string.IsNullOrEmpty(propertyName))
{
PropertyInfo _findedPropertyInfo = instance.GetType().GetProperty(propertyName);
if (_findedPropertyInfo != null)
return _findedPropertyInfo.GetValue(instance, null);
}
return null;
}

A a = new A();
a.Num = 10;
string s = "Num";
object result = ContainProperty(a, s);

本回答被提问者采纳

C# 如何判定一个字符串是否在一个字符数组中
用一个循环遍历下不就可以了,要不就是用现成的类库方法具体看MSDN吧用循环是字符串数组arraystr ,str-字符串for(int i = 0 ; i<arraystr.length ;i++ ){ if(str.equals(arraystr[i]) ) \/\/用值判断 break}

[已解决] C# 如何判断一个字符串是否在一个字符串数组中?
void Contains(string str1){foreach(string str2 in array) \/\/遍历array中的元素{if (str2==str1) \/\/C#中可以使用==来判断字符串相等,这点有点不一样{\/\/存在\/\/TODO} } } 如果你要说数组的方法的话 有 array.Find("C#")参考资料:MSDN Find<(Of <(T>)>) 搜索与指定谓词定...

怎么在C#中的代码判断是INT型数据还是STRING型的数据
\/\/\/ \/\/\/ 判断给定的字符串(strNumber)是否是数值型 \/\/\/ \/\/\/ 要确认的字符串 \/\/\/ <returns>是则返加true 不是则返回 false<\/returns> public static bool IsNumber(string strNumber){ return new Regex(@"^([0-9])[0-9]*(\\.\\w*)?$").IsMatch(strNumber);} 反过来就不是int ...

c#反射判判断某个对象的某个属性是否string类型
{ throw new ArgumentException("不存在属性"+propertyName+"!","propertyName");} bool result=typeof(string).Equals(property.PropertyType);if (result&&property.GetValue(obj)==null){ property.SetValue(obj,string.Empty);} return result;} ...

C#如何判断一个字符串是否在数据库中的某个字段中已存在?
???根据这个字符串 查询数据库,如果有返回值 就说明存在,没有返回值或者返回值为NUll 那就不存在

C#中 如何判断某个字段是什么类型
这个只能判断 是否是纯字符串 或纯数字 string 和int类型 binghen2331的方法可以试试

C#如何判断字符串中是否包含某个字符
例举:在进行C#编程时候,有的时候我们需要判断一个字符串是否是数字字符串,可以通过以下两种方法来实现。方法一:使用try{}catch{}语句。我们可以在try语句块中试图将string类型的字符串变量转换为int类型,如果该字符串不是数字字符串则会抛出异常,这时在catch语句块中就能捕获异常。一旦发现异常,则不...

C# 如何判定一个字符串是否在一个字符数组中
string[] t={"as","aa","sa"};string mod="sa";for(i=0;i<t.Length;i++)if(t[i]==mod)break;if(i<t.Length)\/\/存在的代码 else \/\/不存在的代码

c#判断一个字符串的类型:(int,float,double)
static void Main(string[] args){ string str = "8.8";int a;float b;double c;if (int.TryParse(str, out a)) \/\/如果转成int成功则为int Console.WriteLine("int");else if (double.TryParse(str,out c))\/\/如果转double成功 { if (!float.TryParse(str, out b))\/\/如果转float不...

c#如何判断一个字符串是否包含非指定的字符串数组的字符?
注意会有多次匹配的,所以要使用start参数),如果有则知道匹配是从什么地方开始到什么地方结束。然后在布尔数组中的相同地方设置为false 然后从str中取第二个字符串进行相同操作直到所有字符串比较完成。最后检查布尔数组中的值是不是还剩有true,如果有的话就返回false,如果没有true了,则返回true。

相似回答