C#访问修饰符
public 访问修饰符
public 访问修饰符允许一个类将其成员变量和成员函数暴露给其他的函数和对象。任何公有成员可以被外部的类访问。所有
类或成员,任何代码均可访问该项
private 访问修饰符
private访问修饰符允许一个类将其成员变量和成员函数对其他的函数和对象进行隐藏。只有同一个类中的函数可以访问它的
私有成员。即使是类的实例也不能访问它的私有成员。类的成员的默认访问修饰符是 private
四、 静态
- 静态类中的所有成员也必须是静态。
- 非静态类中的成员可以是静态也可以是非静态。
- 一个静态的函数内部只能使用该函数外部的静态成员。
- 一个类中的公开静态成员,在另外一个类中通过直接使用
类名点的形式调用这个成员。
五、 方法
一个方法是把一些相关的语句组织在一起,用来执行一个任务的语句块。每一个 C#程序至少有一个带有 Main 方法的类。
1. 方法的声明
当定义一个方法时,从根本上说是在声明它的结构的元素。
<Access Specifier> <Return Type> <Method Name>(Parameter List)
{
Method Body
}
下面是方法的各个元素:
- Access Specifier:访问修饰符,这个决定了变量或方法对于另一个类的可见性。
- Return type:返回类型,一个方法可以返回一个值。返回类型是方法返回的值的数据类型。如果方法不返回任何值,
- 则返回类型为 void。
- Method name:方法名称,是一个唯一的标识符,且是大小写敏感的。它不能与类中声明的其他标识符相同。
- Parameter list:参数列表,使用圆括号括起来,该参数是用来传递和接收方法的数据。参数列表是指方法的参数
- 类型、顺序和数量。参数是可选的,也就是说,一个方法可能不包含参数。
- Method body:方法主体,包含了完成任务所需的指令集
2. 方法的调用
使用方法名小括号一对进行调用
3. 方法的参数传递
当调用带有参数的方法时,您需要向方法传递参数。
方式 描述
<Access Specifier> <Return Type> <Method Name>(Parameter List)
{
Method Body
}
值参数 这种方式复制参数的实际值给函数的形式参数,实参和形参使用的是两个不同内存中的值。在这种情况下,当形参的值发生改变时,不会影响实参的值,从而保证了实参数据的安全。
引用参数 这种方式复制参数的内存位置的引用给形式参数。这意味着,当形参的值发生改变时,同时也改变实参的值。
输出参数 这种方式可以返回多个值。
1. 按值传递参数
这是参数传递的默认方式。在这种方式下,当调用一个方法时,会为每个值参数创建一个新的存储位置。
实际参数的值会复制给形参,实参和形参使用的是两个不同内存中的值。所以,当形参的值发生改变时,不会影响实参的值,从而保证了实参数据的安全。
2. 按引用传递参数(ref)引用参数是一个对变量的内存位置的引用。当按引用传递参数时,与值参数不同的是,它不会为这些参数创建一个新的存储位置。引用参数表示与提供给方法的实际参数具有相同的内存位置。
3. 按输出传递参数(out)return 语句可用于只从函数中返回一个值。但是,可以使用 输出参数 来从函数中返回两个值。输出参
数会把方法输出的数据赋给自己,其他方面与引用参数相似。提供给输出参数的变量不需要赋值。当需要从一个参数没有指定初始值的方法中返回值时,输出参数特别有用。
4. 可选参数
可选参数是指在声明方法的时候,给方法的参数设置一个默认值,那么这个参数可以选择不填写,那么在方法中将使用这个方法的默认值。但是可选参数必须定义在不可选参数之后。
递归算法
一个方法可以自我调用。这就是所谓的递归。
class Program
{
static void Main(string[] args)
{
Console.WriteLine("请输入第一个数字:");
string str = Console.ReadLine();
int num = -1;
if (Isnum(str, out num))
{
Console.WriteLine("可以转换成数字:" + num);
}
Console.ReadLine();
Console.WriteLine("第一个数");
string str0 = Console.ReadLine();
}
/// <summary>
/// 判断输入的这个字符是否是整数
/// </summary>
/// <param name="str">输入的字符串</param>
/// <param name="res">如果那个字符串能够转成整数,则使用res装起来</param>
/// <returns></returns>
static bool Isnum(string str, out int res)
{
try
{
//如果传进来的字符串能够转换成数字,转换成数字装进res里面
res = int.Parse(str);
return true;
}
catch (Exception e)
{
//如果传进来的字符串不能转换成数字,则给res赋予0
res = 0;
return false;
}
}
}
namespace _04_ref参数
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("请输入一个数字:");
int i = int.Parse(Console.ReadLine());
Console.WriteLine("输入的数值是:"+i);
Add(ref i);
Console.WriteLine("输入的数值是:" + i);
Console.ReadLine();
}
static void Add(ref int num1)
{
Console.WriteLine("经过计算之后的结果是"+(++num1));
}
}
}
namespace _05params_可变参数
{
class Program
{
static void Main(string[] args)
{
//Console.WriteLine(Max(new int[] { }));
Console.WriteLine(Max(20,25,26,95,84));
Console.ReadLine();
}
static int Max(params int [] array)
{
for (int i = 0; i < array.Length-1; i++)
{
for (int j = 0; j < array.Length-1-i; j++)
{
if (array[j]>array[j-1])
{
int temp = array[j];
array[j ]= array[j + 1];
array[j + 1] = temp;
}
}
}
return array[array.Length - 1];
}
}
}