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

本文关键字:结构 类型 参数传递 自定义 函数 | 更新日期: 2023-09-27 18:31:55

我正在尝试将自定义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");
            }
        }

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

结构声明为公共结构:

public struct P4_Distance
{
 ...
}

没有公众,该结构就保护了可访问性。您不能在某处将受保护的结构公开为公共元素 - 这将破坏受保护可访问性的目的。

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