C# 如何知道给定的变量是否是特定类的变量?
我想知道传递的对象是否是特定类的变量的引用 考虑以下某类“ClassA”的结构:C# 如何知道给定的变量是否是特定类的变量?,c#,C#,我想知道传递的对象是否是特定类的变量的引用 考虑以下某类“ClassA”的结构: public classA { string variable1; int variable2; method1(ref variable1); } 现在,如果在包含Method1Object1实现的类中,我想检查“object1”是特定“ClassA”的哪个变量 因为我想签入条件,比如object1是否是ClassA的variable1,然后//继续逻辑 请提供一个同样的小例子。在安全代码中,最接近这一点的是
public classA
{
string variable1;
int variable2;
method1(ref variable1);
}
现在,如果在包含Method1Object1实现的类中,我想检查“object1”是特定“ClassA”的哪个变量
因为我想签入条件,比如object1是否是ClassA的variable1,然后//继续逻辑
请提供一个同样的小例子。在安全代码中,最接近这一点的是使用表达式,但老实说,您可能不想这样做。尝试和调试将是一场噩梦,可能还有另一种方法。例如,variable1不能属于特定类型有什么原因吗 现在我已经讲了原因,使用表达式的方法类似于调试助手的方法,我永远不会在任何严肃的事情中使用这种方法。注意:很多异常处理和其他代码都是从这里剥离出来的,还要注意它看起来是多么丑陋和粗糙,这就是为什么你真的不应该这么做的原因:
public static void DoStuffWithParameter<T>(Expression<Func<T>> paramExpression)
{
if (paramExpression == null) throw new ArgumentNullException("paramExpression");
var body = ((MemberExpression)paramExpression.Body);
var paramName = body.Member.Name;
var param = ((FieldInfo)body.Member)
.GetValue(((ConstantExpression)body.Expression).Value);
var declaringType = param.DeclaringType;
var paramValue = paramExpression
.Compile()
.Invoke();
if(declaringType.Equals(typeof(ClassA)))
{
//do stuff
}
}
要使用它,您可以使用以下内容:
DoStuffWithParameter=>myClass.VarA 我找到了解决办法。最简单的方法是在method1中传递sender的对象并继续,如下所示
method1(Object sender, ref Object var)
{
if(sender is classA)
{
classA senderObj= (classA) sender;
if((string)var == senderObj.variable1)
{
// Logic for variable1
}
else if((int)var == senderObj.variable2)
{
// Logic for variable2
}
. . .
}
}
您的代码没有编译请说明为什么要这样做。并说为什么你认为你需要参考。我已经编辑了你的标题。请看,如果一致意见是否定的,他们就不应该这样做。首先修正你的语法,然后学习可以问什么。在我看来,你需要重载这个方法,而不是玩弄ref和ifs。但是很难说你真正想要实现什么。请注意,如果传递的函数不是成员,这将崩溃并烧掉,所有这些都是你不应该这样做的原因。非常糟糕的代码。为什么var需要被引用?你在方法中设置过吗?