封装 被定义为"把一个或多个项目封闭在一个物理的或者逻辑的包中"。在面向对象程序设计方法论中,封装是为了防止对实现细节的访问。
C# 封装根据具体的需要,设置使用者的访问权限,并通过 访问修饰符 来实现
C#支持的访问修饰符如下
public | 所有对象都可以访问 |
private | 对象本身在对象内部可以访问 |
protected | 只有该类对象及子类对象可以访问 |
internal | 同一个程序集的对象可以访问 |
protected internal | 访问限于当前程序集或派生自包含类的类型 |
如果没有指定访问修饰符,则使用类成员的默认访问修饰符,即为 private。
一个方法是把一些相关的语句组织在一起,用来执行一个任务的语句块。每一个 C# 程序至少有一个带有 Main 方法的类。
1. 方法定义
<Access Specifier> <Return Type> <Method Name>(Parameter List)
{
Method Body
}
2.方法调用
实例调用和类调用 (实例类名.方法名/类名.方法名)、递归调用
当调用带有参数的方法时,您需要向方法传递参数。在 C# 中,有三种向方法传递参数的方式:
值传递 | 默认传递方式。这种方式复制参数的实际值给函数的形式参数,实参和形参使用的是两个不同内存中的值。在这种情况下,当形参的值发生改变时,不会影响实参的值,从而保证了实参数据的安全。 |
引用传递 | 这种方式复制参数的内存位置的引用给形式参数。这意味着,当形参的值发生改变时,同时也改变实参的值 |
输出传递 | 这种方式可以返回多个值。 |
在 C# 中,使用 ref 关键字声明引用参数,使用out关键字声明输出传递
提供给输出参数的变量不需要赋值。当需要从一个参数没有指定初始值的方法中返回值时,输出参数特别有用
/* 参数传递*/
using System;
public class Argstest
{
class SwapTest
{
// 值传递
public void swapV(int a, int b)
{
int temp;
temp = a;
a = b;
b = temp;
}
//引用传递
public void swpaQ(ref int a, ref int b)
{
int temp;
temp = a;
a = b;
b = temp;
}
//输出传递
public void getValue(out int x, out int y)
{
int temp = Convert.ToInt32(Console.ReadLine());
x = temp;
y = x*x;
}
}
class TestMain
{
static void Main(string[] args)
{
SwapTest sw = new SwapTest();
int a = 345;
int b = 567;
sw.swapV(a,b);
Console.WriteLine("a: {0}",a);
Console.WriteLine("b: {0}",b);
sw.swpaQ(ref a,ref b);
Console.WriteLine("a: {0}",a);
Console.WriteLine("b: {0}",b);
sw.getValue(out a, out b);
Console.WriteLine("a: {0}",a);
Console.WriteLine("b: {0}",b);
Console.ReadLine();
}
}
}