属性,它提供灵活的机制来读取、编写或计算某个私有字段的值。(很多同学由于学了太多的专业术语:结构体中的特征、类中的字段、属性等,有点搞不清,其实属性就是一个字段)
属性作为一个私有字段是不可被访问的,但是我们可以通过写get和set方法来实现属性的读和写。
class SX{ private int number; //编号 //当外界调用方法的时候相当于调用了number的值 //并且外界无法对number进行操作 public int GetNum() //可读 { return number; } //外界通过此方法可以直接修改number的值 //但是无法对number取值 public void SetNum(int value) //可写 { number = value; }}
但由于手写get和set方法太过麻烦,系统为我们封装了这两个方法,我们可以通过调用get访问器和set访问器来实现属性的可读性和可写性。
private string name;//这是一个可读可写的属性public string Name{ //当属性存在get、set访问器时,可以在get、set前加访问修饰符 get { return name; } set { name = value; }}//当我们只写一个get或set属性的时候,默认另外一个private不可访问//访问器本质上也就是方法private int age;public int Age{ set { age = value; }}
只有get访问器或set访问器为私有的属性视为只读属性;只有set访问器或get访问器为私有的属性视为只写属性;两者都有的是读写属性。属性还有一种简写方式(可以省略私有字段的定义)
public string Brand { get; set;}
string str1 = "hunchuanchang";Console.WriteLine(str1[0]);for (int i = 0; i < str1.Length; i ){ Console.Write(str1[i] " ");}
具体string类型怎么使用我们会在下次讲到。
值类型是在栈中分配空间,由系统自动分配;引用类型是在堆中分配空间,由程序员用“new”来分配空间。在这里我们稍微了解一下栈和堆,栈是能自动释放内存,而堆需要GC释放内存。
值类型的赋值操作,两个值类型变量相互赋值后,变量做任何操作都互不影响;引用变量在互相赋值后,修改其中一个变量两个变量都会改变。我们举个例子:
int x, y;x = 3;y = x;y = 33;Console.WriteLine(y);//y=33Console.WriteLine(x);//x=3int[] a = new int[1];int[] b = new int[1];a[0] = 3;b = a;b[0] = 33;Console.WriteLine(b[0]);//b[0]=33Console.WriteLine(a[0]);//a[0]=33
在定义函数时函数名后面括号中的变量名称称为形式参数(简称形参);主调函数中调用一个函数时,函数名后面括号中的参数称为实际参数(简称实参)。形参和实参我们不做多讲,我们主要讲的是引用参数、输出参数和数组形参数。
引用参数
引用参数能让我们的值类型达到引用类型的效果,在定义参数时用ref修饰符声明
输出参数
输出参数能让我们返回多个值,只需在定义参数时用out关键字标识。它的效果与引用参数几乎相同,不同点是:
1.引用参数的实参必须是已经赋值的变量,而输出参数不必。
2.函数使用输出参数时,应该把它看作是未赋值的。
数组型参数
数组型参数必须在参数表最后,而且必须是一维数组类型,用params修饰符声明,不能和ref和out修饰符组合使用
class MyMath{ //以ref修饰的参数,不管是什么类型,TA都会有应用类型的特性 public void Swap(ref int x,ref int y) { int temp = x; x = y; y = temp; } //当我们需要多个返回值的时候,我们可以使用输出参数 //在方法中,输出参数必须要有值 public int Cal(int a, int b, out int x, out int y, out int z) { x = a b; y = a - b; z = a / b; return a * b; } //数组参数 //数组参数不能和ref、out一起使用 //数组参数只能在所有参数最后面 public void Sum(params int[] arr) { int result = 0; for (int i = 0; i < arr.Length; i ) { result = arr[i]; } Console.WriteLine("算出结果为:", result); }}
以上内容纯属个人见解,如有纰漏,轻喷。
来源:https://www.icode9.com/content-1-352201.html联系客服