C# 如何知道给定的变量是否是特定类的变量?

C# 如何知道给定的变量是否是特定类的变量?,c#,C#,我想知道传递的对象是否是特定类的变量的引用 考虑以下某类“ClassA”的结构: public classA { string variable1; int variable2; method1(ref variable1); } 现在,如果在包含Method1Object1实现的类中,我想检查“object1”是特定“ClassA”的哪个变量 因为我想签入条件,比如object1是否是ClassA的variable1,然后//继续逻辑 请提供一个同样的小例子。在安全代码中,最接近这一点的是

我想知道传递的对象是否是特定类的变量的引用

考虑以下某类“ClassA”的结构:

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需要被引用?你在方法中设置过吗?