首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

类不可访问的有关问题

2012-01-01 
类不可访问的问题在ConsoleApplication4方案下有两个类文件MyClass.cs====================usingSystemus

类不可访问的问题
在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 ”了吗?所以就“不能访问”

热点排行