【问题标题】:C# - How to pass ClassA's properties as ClassB's argument(s)?C# - 如何将 ClassA 的属性作为 ClassB 的参数传递?
【发布时间】:2014-05-06 14:46:04
【问题描述】:

我确信以下问题的答案是基本的,但我对 C# 的了解也是如此。我四处搜索,但找不到适用于我的应用程序的答案。我有以下内容(从我的实际代码中简化,在记事本中,所以我希望我没有弄乱语法)。由于我无法让它工作,我认为某处存在错误。我的最终代码要复杂得多。我希望能够让 dataA 和 dataB 类携带不同的属性集,因为它们各自代表不同的对象。希望了解更多。提前谢谢你。

我收到以下错误:

“double”不包含“prop1”的定义,并且找不到接受“double”类型的第一个参数的扩展方法“prop1”(您是否缺少 using 指令或程序集引用?)

public class ClassA
{
    // Class constructor
    public ClassA(double arg1, double arg2)
    {
        prop1 = arg1;
        prop2 = arg2;
    }

    // Class properties
    public double prop1 { get; set; }
    public double prop2 { get; set; }
}

public class ClassB
    {
        // Class constructor
        public ClassB(double arg3)
        {
            var1 = arg3.prop1;
            var2 = arg3.prop2;
        }

        // Class properties
        public double var1 { get; set; }
        public double var2 { get; set; }
    }

class Program
{
    static void Main(string[] args)
    {
        ClassA dataA = new ClassA(1.0, 2.0);
        ClassB dataB = new ClassB(dataA);
        // end result: dataB.var1 and dataB.var2
    }
}

【问题讨论】:

  • ClassB 构造函数采用双倍,它可以与 ClassA 一起使用
  • 就是这样。我一直在想,因为 ClassA 都是双精度的,所以它本身就是双精度。实际上,很直接。 ClassA 是它通过的对象的类型,而不是双精度。感谢您的澄清。

标签: c# class properties arguments


【解决方案1】:

修改ClassB的构造函数,取ClassA:

public class ClassB
{
    // Class constructor
    public ClassB(ClassA arg3)
    {
        var1 = arg3.prop1;
        var2 = arg3.prop2;
    }

    // Class properties
    public double var1 { get; set; }
    public double var2 { get; set; }
}

【讨论】:

    猜你喜欢
    • 2020-01-19
    • 1970-01-01
    • 2020-04-21
    • 1970-01-01
    • 2010-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多