【问题标题】:How to use a variable as a parameter for a method from another class?如何将变量用作另一个类的方法的参数?
【发布时间】:2018-09-19 07:02:41
【问题描述】:

在公共部分类中声明了一个变量,我需要将其作为参数获取,该变量属于另一个类中的类。

这个方法接收两个向量/列表作为参数,每个都在不同的类中,在不同的命名空间中。

主要问题在于部分类中的那个。我尝试将其声明为公共,我还尝试将其声明为私有然后执行 getter,我尝试在私有类中调用该方法,而另一个向量出现在上下文之外。长话短说,没有任何效果。

您有什么解决方案或能想到什么可以提供帮助的吗?

这是一个代码示例

namespace x
{
    public class y
    {
        public List<object> hello; 
    }

    public partial class z
    {
        method(hello); 
    }
}

【问题讨论】:

    标签: c#


    【解决方案1】:

    您需要一个包含hello-member 的类的实例。所以没有y 的实例就没有hello。该成员是 publicprivate 没有区别,只要该成员不属于任何实例即可。

    var x = new MyClass();
    

    现在您可以使用该实例成员:

    var z = new AnotherClass();
    z.method(x.hello);
    

    我已将您的类名替换为更有意义的名称。

    【讨论】:

      【解决方案2】:

      你必须问自己的问题是哪个y.hello?您可以创建y 类的多个实例,因此您也可以拥有hello 的多个实例。那你想要哪一个?

      • 一个新实例?然后创建一个实例并传入:

        y yInstance = new y();
        zInstance.method(yInstance.hello);
        
      • 现有实例?那个的用途:

        zInstance.method(someExistingY.hello);
        
      • 全球只有一个y。不需要实例。将字段设为static(这听起来是个糟糕的设计):

        public static List<object> hello;
        
        zInstance.method(y.hello);
        

      除了您的代码无法编译之外还有其他原因。您应该始终将方法调用放在方法体中,而不是直接放入类中。所以你可能需要这样的东西,其中method 本身在另一个部分中定义,因为它没有显示在你的代码示例中:

      public partial class z
      {
          public void Foo()
          {
              method(hello); 
          }
      }
      

      【讨论】:

      • 不错的答案,如果您在方法声明中添加关于他的问题的描述(查看我的答案),我很乐意删除我的答案以支持此答案。
      猜你喜欢
      • 1970-01-01
      • 2017-11-19
      • 1970-01-01
      • 2021-12-24
      • 1970-01-01
      • 2020-07-15
      • 1970-01-01
      • 1970-01-01
      • 2020-09-23
      相关资源
      最近更新 更多