C#不一致的可访问性

时间:2013-11-21 18:34:06

标签: c# accessibility

尝试编译C#代码时出现不一致的可访问性错误。我已经广泛搜索了它,但我找到的所有案例和答案都涉及一些私人 - 公众的不稳定。我根本没有在我的代码中写任何私有内容,我已经检查过并仔细检查过。我在某处阅读了一些我可以尝试“降低范围”的内容,但我不知道这意味着什么。帮助

很抱歉找不到代码,这里是github:
        https://gist.github.com/jyggorath/7589742

using System;

public class oblig5 {

    // // // BEGIN GLOBAL 1 // // //
    public const int STRLEN = 40;
    public const int MAXPERSONER = 500;
    public const int MAXLAG = 50;
    public enum funksjon {trener, oppman, ingen};
    // // // END GLOBAL 1 // // //

    // // // BEGIN PERSON CLASS // // //
    public class Person {
        // // // privates:
        public string navn;
        public string adr;
        public string mail;
        public string klasse;
        public int tlf;
        public funksjon verv;
        public int lagnr;

        // // // publics:
        // constructor
        public Person() {
            navn = ""; adr = ""; mail = ""; klasse = "";
            tlf = 0; lagnr = 0;
            verv = (funksjon)2;
        }

        // skriv:
        public void skriv() {
            Console.WriteLine("Navn: {0}\nAdresse: {1}\nMail: {2}\nKlasse: {3}\nTlf: {4}\nLagnr: {5}", navn, adr, mail, klasse, tlf, lagnr);
            if (verv == (funksjon)0)
                Console.WriteLine("Er Trener\n");
            else if (verv == (funksjon)1)
                Console.WriteLine("Er Oppmann\n");
            else
                Console.WriteLine("Har ikkeno verv\n");
            lag[lagnr].skriv();
        }

        public void skriv2() {
            Console.WriteLine("Navn: {0}\nAdresse: {1}\nMail: {2}\nKlasse: {3}\nTlf: {4}\n", navn, adr, mail, klasse, tlf);
        }

        // les:
        public void les_data(int lnr) {
            lagnr = lnr;
            navn = les_str("Personens navn");
            adr = les_str("Personens adresse");
            mail = les_str("Personens mail");
            klasse = les_str("Hvilke klasse går personen i?");
            tlf = les_int("Personens telefonnr", 10000000, 99999999);
            verv = les_enum();
        }

        // fil:
        public void skriv_til_fil(System.IO.StreamWriter file) {
            file.WriteLine(navn);
            file.WriteLine(adr);
            file.WriteLine(mail);
            file.WriteLine(klasse);
            file.WriteLine(tlf);
            file.WriteLine((int)verv);
            file.WriteLine(lagnr);
        }

        public void les_fra_fil(System.IO.StreamReader file, string nvn) {
            navn = nvn;
            adr = file.ReadLine();
            mail = file.ReadLine();
            klasse = file.ReadLine();
            tlf = int.Parse(file.ReadLine());
            verv = (funksjon)int.Parse(file.ReadLine());
            lagnr = int.Parse(file.ReadLine());
        }

        // sammenligninger:
        public bool har_navn(string t) {
            return (navn == t);
        }

        public bool har_verv(funksjon v) {
            return (verv == v);
        }

        public bool tilhorer_lag(int n) {
            return (lagnr == n);
        }
    }
    // // // END PERSON CLASS // // //

    // // // BEGIN LAG CLASS // // //
    public class Lag {
        // // // privates:
        public string navn;
        public string adr;
        public string mail;
        public string hjemmeside;

        // // // publics:
        public Lag() {
            navn = ""; adr = ""; mail = ""; hjemmeside = "";
        }

        public void skriv() {
            Console.WriteLine("Lagnavn: {0}\nLagadresse: {1}\nLagmail: {2}\nLaghjemmeside: {3}\n", navn, adr, mail, hjemmeside);
        }

        public void les_data(string t) {
            navn = t;
            adr = les_str("Lagets adresse");
            mail = les_str("Lagets mail");
            hjemmeside = les_str("Lagets hjemmeside");
        }

        public bool har_navn(string t) {
            return (navn == t);
        }
    }
    // // // END LAG CLASS // // //

    // // // BEGIN GLOBAL 2 // // //
    // things:
    public static Person[] personer = new Person[MAXPERSONER + 1];
    public static Lag[] lag = new Lag[MAXLAG + 1];
    public static int siste_person = 0, siste_lag = 0;

    // funskjoner:
    public static void skriv_meny() {
        Console.WriteLine("\n\nFØLGENDE KOMMANDOER ER LOVLIG:");
        Console.WriteLine("\tA = skriv ALT om En person");
        Console.WriteLine("\tB = skriv ALLE trenere ELLER oppmenn");
        Console.WriteLine("\tC = skriv ALT om et gitt lag");
        Console.WriteLine("\tL = nytt Lag legges inn");
        Console.WriteLine("\tP = ny Person legges inn");
        Console.WriteLine("\tQ = Quit/Avslutt");
    }

    public static char les_char(string t) {
        Console.Write(string.Concat("\n", t, ":  "));
        char retur = Console.ReadLine().ToUpper()[0];
        return retur;
    }

    public static int les_int(string t, int min, int max) {
        int retur = min - 1;
        do {
            Console.Write(string.Concat("\t", t, " (", min.ToString(), "-", max.ToString(), "):  "));
            retur = int.Parse(Console.ReadLine());
        } while (retur < min || retur > max);
        return retur;
    }

    public static string les_str(string t) {
        return Console.ReadLine();
    }

    public static funksjon les_enum() {
        char ch = '\0';
        do {
            Console.Write("\tT(rener) eller O(ppmann):  ");
            ch = Console.ReadLine().ToUpper()[0];
        } while (ch != 'T' && ch != 'O');
        return ((ch == 'T') ? (funksjon)0 : (funksjon)1);
    }

    public static int finn_person(string t) {
        for (int i = 1; i <= siste_person; i++)
            if (personer[i].har_navn(t))
                return i;
        return 0;
    }

    public static int finn_lag(string t) {
        for (int i = 1; i <= siste_lag; i++)
            if (lag[i].har_navn(t))
                return i;
        return 0;
    }

    public static void skriv_person() {
        string nvn = les_str("Navn på person");
        int person_nr = finn_person(nvn);
        if (person_nr == 0)
            Console.WriteLine("Personen fins ikke");
        else
            personer[person_nr].skriv();
    }

    public static void skriv_verv() {
        funksjon v = les_enum();
        for (int i = 1; i < siste_person; i++) {
            if (personer[i].har_verv(v))
                personer[i].skriv();
        }
    }

    public static void skriv_lag() {
        string lagnvn = les_str("Navn på lag");
        int lagnr = finn_lag(lagnvn);
        if (lagnr == 0)
            Console.WriteLine("Laget fins ikke");
        else {
            lag[lagnr].skriv();
            for (int i = 1; i <= siste_person; i++) {
                if (personer[i].tilhorer_lag(lagnr))
                    personer[i].skriv2();
            }
        }
    }

    public static void nytt_lag() {
        if (siste_lag < MAXLAG) {
            string lagnvn = les_str("Lagets navn");
            if (finn_lag(lagnvn) == 0) {
                siste_lag++;
                lag[siste_lag] = new Lag();
                lag[siste_lag].les_data(lagnvn);
            }
            else
                Console.WriteLine("Laget fins fra før!");
        }
        else
            Console.WriteLine("Lag er full!");
    }

    public static void ny_person() {
        if (siste_person < MAXPERSONER) {
            string lagnvn = les_str("Hvilke lag tilhører personen?");
            int lagnr = finn_lag(lagnvn);
            if (lagnr != 0) {
                siste_person++;
                personer[siste_person] = new Person();
                personer[siste_person].les_data(lagnr);
            }
            else
                Console.WriteLine("Laget fins ikke!");
        }
        else
            Console.WriteLine("Personer er fulle!");
    }

    public static void skriv_til_fil() {
        System.IO.StreamWriter file = new System.IO.StreamWriter("personer.dta");
        for (int i = 1; i <= siste_person; i++) {
            personer[i].skriv_til_fil(file);
        }
    }

    public static void les_fra_fil() {
        string buffer;
        try {
            System.IO.StreamReader file = new System.IO.StreamReader("personer.dta");
            while ((buffer = file.ReadLine()) != null) {
                siste_person++;
                personer[siste_person] = new Person();
                personer[siste_person].les_fra_fil(file, buffer);
            }
        }
        catch {
            Console.WriteLine("Finner ikke filen!");
        }
    }
    // // // END GLOBAL 2 // // //

    // // // BEGIN MAIN // // //
    public static void Main() {
        char kommando;

        les_fra_fil();
        skriv_meny();
        kommando = les_char("Ønske");
        while (kommando != 'Q') {
            switch (kommando) {
                case 'A':
                    skriv_person(); break;
                case 'B':
                    skriv_verv(); break;
                case 'C':
                    skriv_lag(); break;
                case 'L':
                    nytt_lag(); break;
                case 'P':
                    ny_person(); break;
                default:
                    skriv_meny();
                    break;
            }
            kommando = les_char("Ønske");
        }
        skriv_til_fil();
        Console.WriteLine("\n");
    }
    // // // END MAIN // // //
}

抱歉奇怪的变量名称。这是从我的挪威老师的C ++作业移植的代码(我没有改变它们,因为我也是挪威语,我从未想过会遇到这些问题)

如您所见,我的代码中定义的所有类都是公共的。所以这不是我的问题。错误是在第126行和第127行以及160生成的。错误处理变量的赋值,我的自定义类作为类型,并且我的函数返回自定义枚举类型。帮助

1 个答案:

答案 0 :(得分:1)

我的心灵调试意识告诉我你没有宣布一个班级是公开的

public class MyType

如果您想创建MyType的公共字段,仅仅输入class MyType是不够的,您必须明确公开。