Code Bye

C#代码出问题了

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace delete
{
class Program
{
static void Main(string[] args)
{
liweike a=new liweike();
Console.WriteLine(a.MyIntProp);
}
}
class liweike
{
private int li = 22;
private int myInt = 112;
public int MyIntProp
{
get
{
return myInt;
}
set
{

try
{
if (value >= 0 && value <= 10)
myInt = value;
else
throw (new ArgumentOutOfRangeException());
}
catch (Exception e)
{
Console.WriteLine(e);
}
}
}

}
}
问一下这段代码为什么不抛出异常并且不执行catch语句?还有就是value这个关键字怎么知道指的是private int myInt而不是private int li  ?

解决方案:40分
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace delete
{
    class Program
    {
        static void Main(string[] args)
        {
            liweike a = new liweike();
            a.MyIntProp = 100; //这样才是执行了 set
            Console.WriteLine(a.MyIntProp);
        }
    }
    class liweike
    {
        private int li = 22;
        private int myInt = 112;
        public int MyIntProp
        {
            get
            {
                return myInt;
            }
            set
            {
                try
                {
                    if (value >= 0 && value <= 10)
                        myInt = value;
                    else
                        throw (new ArgumentOutOfRangeException());
                }
                catch (Exception e)
                {
                    Console.WriteLine(e);
                }
            }
        }
    }
}


CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明C#代码出问题了