无法在C#函数中传递自定义(struct)类型作为参数?

时间:2016-01-25 23:08:54

标签: c# methods struct

我正在尝试将自定义struct值传递给C#中的public static方法,但它正在提供

  

错误1辅助功能不一致

我的main方法代码:

            Console.WriteLine("Distance 1");
            Console.Write("Enter feet : ");
            int feet = int.Parse(Console.ReadLine());
            Console.Write("Enter Inches : ");
            float inches = float.Parse(Console.ReadLine());

            P4_Distance distance1 = new P4_Distance(feet, inches);

            Console.WriteLine("Distance 2");
            Console.Write("Enter feet : ");
            feet = int.Parse(Console.ReadLine());
            Console.Write("Enter Inches : ");
            inches = float.Parse(Console.ReadLine());

            P4_Distance distance2 = new P4_Distance(feet, inches);

            P4_Compare_distances(distance1, distance2);

我的struct只是:

struct P4_Distance
        {
            public int feet { get; set; }
            public float inches { get; set; }
            public float totalInches { get; set; }

            public P4_Distance(int Feet,float Inches)
            {
                feet = Feet;
                inches = Inches;
                totalInches = inches + (feet * 12);
            }

        }

给出错误的方法是:

public static void P4_Compare_distances(P4_Distance distance1, P4_Distance distance2)
        {
            if (distance1.totalInches > distance2.totalInches)
            {
                Console.WriteLine("Distance 1 > Distance 2");
            }
            else
            {
                Console.WriteLine("Distance 2 > Distance 1");
            }

        }

1 个答案:

答案 0 :(得分:2)

将结构声明为public:

public struct P4_Distance
{
 ...
}

没有公众,该结构已经保护了可访问性。您不能将受保护的结构作为公共元素暴露在某个地方 - 这会破坏受保护的可访问性的目的。

通过公开结构,您可以使访问性保持一致。