尝试编译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生成的。错误处理变量的赋值,我的自定义类作为类型,并且我的函数返回自定义枚举类型。帮助
答案 0 :(得分:1)
我的心灵调试意识告诉我你没有宣布一个班级是公开的
public class MyType
如果您想创建MyType
的公共字段,仅仅输入class MyType
是不够的,您必须明确公开。