C#总结(访问修饰符,静态方法和实例方法)

目录

访问修饰符

静态方法和实例方法

try-catch捕捉异常

字符串转成数字类型

类型自动转换规则(以int和double为例)


访问修饰符

1.public:公有成员,完全公开,没有访问限制, 所有的类都可以访问

2.private:私有成员 ,在类的内部才可以访问(类中字段和方法默认的访问修饰符是private)

3.protected:保护成员,该类内部和继承类(子类)可以访问

4.internal:内部的,当前程序集内(本项目)可以访问

5.protected internal:内部保护的, 只能是本项目内部或继承类(子类)访问

扫描二维码关注公众号,回复: 9754154 查看本文章

静态方法和实例方法

1.静态方法:static关键字表示

在自己本类中,调用两种方法

(1)类名.静态方法名

(2)静态方法名

不在自己本类中:类名.静态方法名

2.实例方法:需要new实例化

第一步:实例化一个对象

第二步:对象名.方法名

区别:静态方法只能访问自己所在类中的静态成员(包括静态数据成员和静态方法),不能访问实例成员;实例方法既可以访问实例成员,也可以访问静态成员。

静态成员与实例成员:由static修饰的称为静态成员,没有static修饰的称为实例成员。

     class Program
    {
        static void Main(string[] args)
        {
            Test.Say();      //调用的静态方法在test类中,不再Program类中,要用类名.方法名
            Test t = new Test();       //实例方法必须先创建一个对象
            t.SayHello();              //调用该方法,对象名.实例名
            Console.ReadKey();
        }
    }

    public class Test
    {
        static int x= 6;       //定义了一个静态成员
        int y= 7;              //定义了一个实例成员

        public static void Say()        //静态方法,static标识
        {
            Console.WriteLine("今天天气真好");
            x = x+10;            //静态方法中只能使用静态成员,不能使用实例成员
        }
    
        public void SayHello()        //实例方法
        {
            Console.WriteLine("hello,大家好");
            //实例方法既可以使用实例成员,也可以使用静态成员
            x = x + 20;     //x静态成员
            y = y + 10;     //y为实例成员
        }
    }

try-catch捕捉异常

1.try中放可能报异常的代码,发生异常后try代码块中的后续代码不会被执行,catch以后的代码则会继续执行,如果try代码中没有异常,则不会执行catch当中的内容

2.catch当中放出现异常之后需要执行的代码。Exception 类主要属性:Message、StackTrace。message会将错误信息提示出来。

3.finally也可以不写,不管try的语句报不报异常,finally都会执行的,就算try当中有return语句,也会执行finally当中的语句。

            string i = "123a";
            try
            {
                int num = Convert.ToInt32(i);       //将"123a"转换成int类型,会报异常
            }
            catch (Exception ex)
            {
                Console.WriteLine("不是数字!");
                //MessageBox.Show(ex.Message);        //显示异常的消息,MessageBox.Show在winform窗体中使用
            }
            finally
            {
                Console.WriteLine("不管报不报异常,我都会执行的,如果try当中有return语句,在返回前,我也会执行的");
            }
            Console.ReadKey();

字符串转成数字类型

第一种方法:Convert.ToInt32,to后面可以是任意类型

            //将字符串类型转换为int类型            
            int num = Convert.ToInt32("100");            
            //由string类型转化为char类型
            char chGender = Convert.ToChar("男");

第二种方法: int.Parse(),.Parse前面可以是其他类型,可能会报异常(try-catch解决)

             int num1 = int.Parse("100");       

第三种方法:int.TryParse(string,out int number); 返回类型为bool值

            bool result = int.TryParse("100", out int num2);
            if (result)
            {
                Console.WriteLine(num2);        //num2为转换成功后的数字
            }
            else
            {
                Console.WriteLine("不是数字");
            }

第四种方法:自定义一个mytryparse方法,实现和第三种方法一样的功能

判断是否为数字的方法:IsNum,函数返回值为bool类型

        public static bool IsNumber(string str,out int num)
        {
            string strnum="";
            num=0;
            try
            {
                num=int.Parse(strnum);
                return true;
            }
            catch
            {
                return false;
            }
        }

Main主函数调用此方法

            string strnum = "70";
            bool results=IsNumber(strnum, out int nums);
            if (result)
            {
                Console.WriteLine(nums);
            }
            else
            {
                Console.WriteLine("不能转换成数字!");
            }

类型自动转换规则(以int和double为例)

下面这张图,表示int和double类型的范围,从图中我们可以看出,double类型的范围大于int类型的范围

类型的自动转换,其实就是一种隐式转换,不需要我们写任何条件,就可以进行转换。有隐式转换,就有对应的强制转换,也就是必须要进行显式转换。下面分别介绍隐式转换和显示转换的条件。

int转double就是一种隐式转换

            int num1 = 10;      //定义一个int类型的变量num1
            double num2= 30.5;  //定义一个double类型的变量num2
            num2 = num1;        //将int类型的值赋给double类型,隐式转换

隐式转换的条件:

(1)源类型和目标类型可以兼容(int和double类型就是相互兼容的类型,而字符串和int类型就不兼容)

(2)由低级向高级转换(目标类型大于源类型,在这里,int是低级,double是高级)

其实很好理解,37是int类型,37.0是double类型,可以说所有的int类型数据都可以用double类型的数据表示,也就是说int类型的数据可以隐式转换成double类型的数据。

强制转换:

(1)源类型和目标类型一定要相兼容

(2)由高级向低级的转换,(double类型转换成int类型)

注意:int转double 隐式转换,多小数

          double转int  显示转换,丢精度

刚才说到int和string 类型不能兼容,怎么能转换,前面已经介绍过了,在这里补充的是convert不仅仅是内存级别的转换,而是考虑数据意义的转换。convert是一个加工,改造的过程。

Tips:对于表达式

(1)如果一个操作数为double型,则整个表达式可提升为double型

(2)求10/3要想得到3.333的处理

            int num1 = 10;
            int num2 = 3;

            double remainder = num1 * 0.1 / num2;
            Console.WriteLine("{0:0.000}", remainder);
            Console.ReadKey();
发布了71 篇原创文章 · 获赞 21 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/wtt15100/article/details/104471509