电影网站要怎样做才有出路,深圳室内设计公司排行榜,做海报的网站,衡水网站设计公司哪家专业这几天在搬砖时候用到了set()与get()#xff0c;同事问了我一些问题#xff0c;我打算在博客中总结一下。 觉得帮助到了您#xff0c;帮我点个赞哦。
属性访问器
其实说白了就是操作一个属性#xff0c;更通俗一点说就是对一个变量的取值与赋值。
先来看get()
get 访问…这几天在搬砖时候用到了set()与get()同事问了我一些问题我打算在博客中总结一下。 觉得帮助到了您帮我点个赞哦。
属性访问器
其实说白了就是操作一个属性更通俗一点说就是对一个变量的取值与赋值。
先来看get()
get 访问器必须在 return 或 throw 语句中终止并且控制不能超出访问器体。
private int a; // 私有的变量
public int A // 公有变量这个变量作用就是得到私有变量的值
{get {return a; //这里的return就是上边说的必须在 return 或 throw 语句中终止}
}现在还是不懂对吧这个变量怎么还能加{ }里边写语句呢。嘿嘿就是这么神奇就是这么规定的。 当你改变a的值A的值也会变。 假如你在主函数当中有这么个操作
a5;你会发现运行完a5以后A也变成了5。
当你使用这个公有变量A当做右值给其他变量赋值的时候他就会执行{ }里边的语句。 假如你在主函数当中有这么个操作
int BA;这个时候并不是把A的值直接给B而是先执行A里边的get()把a的值返回给A再将A的值传递给B 这时候相当于
int B0
Aa
BA只带有 get 访问器的属性称为只读属性。无法对只读属性赋值。 假如你在主函数当中有这么个操作
int B2;
AB;这个时候直接把B的值给A但是编译器报错提示A是只读的
当引用属性时除非该属性为赋值目标否则将调用 get 访问器读取该属性的值。 白话解释一下当变量定义时使用get那么变量在作为右值给其他变量赋值或者当做函数参数值时候会先运行get里边的语句。当做为左值被赋值时候则报错。 现在总结一下 1.get就是返回一个值或者说属性 2.在定义时使用get的变量在使用作为右值时先执行get里边的语句返回给变量再去使用 3.在定义时使用get的变量在使用作为左值时报错 不能光说不练啊接下来写个控制台程序来验证一下。 先来源码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace ConsoleApplication1
{class Program{static private int a 3;static public int A{get { return a; }}static void Main(string[] args){int B0;a 5;A 22;B A;}}
}这个时候编译一下报错了 错误 1 无法对属性或索引器“ConsoleApplication1.Program.A”赋值 – 它是只读的 接下来就把这句话屏蔽掉编译运行打断点。 在给a赋值时候在使用A时候打个断点在A的get里边打个断点。 运行一下看一下 先运行到a 5;这个时候A与a都还为3 按F10单步再接着往下边运行 我们惊奇的发现Aa同时变成了5 按F10单步再接着往下边运行就会进入get 按F10单步再接着往下边运行才到A给B赋值。 好啦get我们讲完啦。接下来是set
再来看set()
set 访问器与返回 void 的方法类似。它使用称为 value 的隐式参数此参数的类型是属性的类型。
private int a;
public int A
{set {a value; }
}当你改变A的值a的值也会变。 假如你在主函数当中有这么个操作
A5;你会发现运行完A5以后a也变成了5。
当你使用这个公有变量A当做左值被其他变量赋值的时候他就会执行{ }里边的语句。 假如你在主函数当中有这么个操作
int B3;
A B;这个时候并不是只把B的值给A还会将A的值赋值给a 这时候相当于
int B3
AB
aA只带有 set 访问器的属性称为只写属性。只写属性除作为赋值的目标外无法对其进行引用。 假如你在主函数当中有这么个操作
int B2;
AB;这个时候直接把A的值给B但是编译器报错提示A是只写的
现在总结一下 1.set改变A变量时候a的值也会改。 2.只有set属性的变量是只读的。
不能光说不练啊接下来写个控制台程序来验证一下。 先来源码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace ConsoleApplication1
{class Program{static private int a 3;static public int A{set { a value; }}static void Main(string[] args){int B 0;A 22;B A;}}
}这个时候编译一下报错了 错误 1 无法对属性或索引器“ConsoleApplication1.Program.A”赋值 – 它是只读的 接下来就把这句话屏蔽掉编译运行打断点。 我们在给A赋值时打断点再在set处打断点。 运行一下看一下 先运行到a 3;这个时候A里边还是空的这是因为A是只写的没办法读出来他的数值 按F10单步再接着往下边运行直接先到set中a的值变成了22。神奇吧 按F10单步再接着往下边运行程序结束。 好啦get、set我们讲完啦。接下来是结合在一块。
再来看set()get()
同时带有 get 和 set 访问器的属性为读写属性。
private int a; // 私有的变量
public int A // 公有变量这个变量作用就是得到私有变量的值
{get {return a; }set {a value; }
}经过上述讲解我们直接来看代码编译调试看一下。源代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace ConsoleApplication1
{class Program{static private int a 33;static public int A{get { return a; }set { a value; }}static void Main(string[] args){int B;B A;a 55;}}
}这个代码自己编译调试一下吧自己建一个工程直接复制过去就好了。
总结
1、A4与a4的值总是相等。
2、若要修改a4则需要通过A4修改即可。a4的往往通过设置外部属性A4值的方式然后在A4属性内设置一些条件来更新a4。
3、Value的值总是等于外部属性A4的值。