C#基础-1:访问控制符、静态与非静态、参数传递

来源:互联网 发布:刚玉的优化处理方法 编辑:程序博客网 时间:2024/06/05 16:14

c#的访问控制符有五种:

1.public:公有的,被修饰的类成员是可以被任何外部类访问的。
2.private:私有的,被修饰的类成员只能在类内部访问或者调用。私有的类成员变量只能由类内部的方法访问,私有的类方法只能在类内部被调用,而该类的实例也无法调用私有的类方法。
3.protected:受保护的,protected修饰的类成员只能由该类的子类访问,便于实现继承。
4.internal:内部的,internal与public相似,但是internal的范围要小于public。internal修饰的类成员只能在该应用程序内被任意的外部类访问。
5.protected internal:受保护内部的,就是在同一个应用程序内部,被修饰的类成员只能由应用程序内的该类的子类进行访问,同样是为了继承的实现方便。
PS:
还有一种访问控制符,那就是不写,默认就是private的了。


c#的以及静态成员和非静态成员,静态方法和非静态方法

  • 静态成员是类公有的,无论创建多少个该类的实例,其静态成员在内存都只有一个。对于该类的所有实例,类的静态成员在内存中都只占同一块存储区域。
  • 非静态成员是属于类的实例的,每创建一个类的实例就会在内存中为类的非静态成员分配存储。
  • 静态方法属于类所有,在类进行实例化前就可以调用;静态方法只能访问静态成员,非静态方法可以访问类的任何成员;因为类的静态方法在类实例化前就可以调用,但是非静态成员需要在类实例化后才能分配内存,所以静态方法无法访问非静态成员。
  • 由于静态方法属于类,而不是属于类的实例,所以静态方法中不能使用this了。

c#的参数传递

参数传递的参数分为三种:
1.值参数
这是参数传递的默认方式。在这种方式下,当调用一个方法时,会为每个值参数创建一个新的存储位置。实际参数的值会复制给形参,实参和形参使用的是两个不同内存中的值。所以,当形参的值发生改变时,不会影响实参的值,从而保证了实参数据的安全。

namespace MyTestApplication{    class Program    {        public void swap(int x, int y) {            int temp;            temp = x;            x = y;            y = temp;        }    }    class TestProgram     {        static void Main(string[] args)        {            int a = 100;            int b = 50;            Console.WriteLine("互换前a的值是{0},b的值是{1}", a, b);            Program p = new Program();            p.swap(a, b);            Console.WriteLine("互换后a的值是{0},b的值是{1}", a, b);        }    }}

控制台显示结果:
互换前a的值是100,b的值是50
互换后a的值是100,b的值是50

2.引用参数
引用参数是一个对变量的内存位置的引用。当按引用传递参数时,与值参数不同的是,它不会为这些参数创建一个新的存储位置。引用参数表示与提供给方法的实际参数具有相同的内存位置。

namespace MyTestApplication{    class Program    {        public void swap(ref int x,ref int y) {            int temp;            temp = x;            x = y;            y = temp;        }    }    class TestProgram     {        static void Main(string[] args)        {            int a = 100;            int b = 50;            Console.WriteLine("互换前a的值是{0},b的值是{1}", a, b);            Program p = new Program();            p.swap(ref a, ref b);            Console.WriteLine("互换后a的值是{0},b的值是{1}", a, b);        }    }}

控制台输出结果是:
互换前a的值是100,b的值是50
互换后a的值是50,b的值是100

3.输出参数
return 语句可用于只从函数中返回一个值。但是,可以使用 输出参数 来从函数中返回多个值。输出参数会把方法输出的数据赋给自己,其他方面与引用参数相似。

namespace MyTestApplication{    class Program    {        public void swap(out int x,out int y) {            x = 150;            y = 200;        }    }    class TestProgram     {        static void Main(string[] args)        {            int a = 100;            int b = 50;            Console.WriteLine("处理前a的值是{0},b的值是{1}", a, b);            Program p = new Program();            p.swap(out a, out b);            Console.WriteLine("处理后a的值是{0},b的值是{1}", a, b);        }    }}

控制台输出结果是:
处理前a的值是100,b的值是50
处理后a的值是150,b的值是200

0 0
原创粉丝点击