读书人

类不可访问的有关问题

发布时间: 2012-01-01 23:10:55 作者: rapoo

类不可访问的问题
在ConsoleApplication4方案下有两个类文件

MyClass.cs
====================
using System;
using System.Collections.Generic;
using System.Text;

namespace ConsoleApplication4
{
public class MyClass
{
public readonly string Name;
private int intVal;

public int Val
{
get
{
return intVal;
}

set
{
if (value > = 0 && value <= 10)
intVal = value;
else
throw (new ArgumentOutOfRangeException( "Val ", value, "Value must be assigned a value between 0 and 10. "));
}
}

public override string ToString()
{
return "Name: " + Name + "\nVal: " + Val;
}

private MyClass()
: this( "Default Name ")
{
}

public MyClass(string newName)
{
Name = newName;
intVal = 0;
}
}


}
--------------------
Class1.cs
=================

using System;


namespace ConsoleApplication4
{
class Class1
{
[STAThread]
static void Main(string[] args)
{
Console.WriteLine( "Creating object myObj... ");
MyClass myObj=new MyClass();
Console.WriteLine( "myObj created. ");
for(int i=-1;i <=0;i++)
{
try
{
Console.WriteLine( "\nAttempting to assgin {0} to myObj.Val... ",i);
myObj.Val=i;
Console.WriteLine( "Value{0}assigned to myObj.Val. ",myObj.Val);
}

catch(Exception e)
{
Console.WriteLine( "Exception{0}thrown. ",e.GetType().FullName);
Console.WriteLine( "Message:\n\ "{0}\ " ",e.Message);
}
}
Console.WriteLine( "\nOutputting myObj.ToString()... ");
Console.WriteLine(myObj.ToString());
Console.WriteLine( "myObj.ToString() Output. ");

}
}
}

启动调试后出现 "ConsoleApplication.MyClass.MyClass() "不能访问保护级别受限制,不知道怎么解决





[解决办法]
主意你的
private MyClass()
: this( "Default Name ")
{
}

public MyClass(string newName)
{
Name = newName;
intVal = 0;
}
你在Class1.cs中MyClass myObj=new MyClass(),当然是实例化的private MyClass()这种实现方式,看到“private ”了吗?所以就“不能访问”

读书人网 >C#

热点推荐