【c#.Net】类:面向对象
2021-03-17 17:23
标签:ext empty sys pre 互调 task 方法 实例 静态 面向对象思想----制作仪表盘 访问修饰符,如果创建的属性字段,类,什么也不加默认为private private字段只能在类内使用 一般实例化大类时,其中的属性都是private,避免谁都可以修改里面的变量值 其中:java的一种惯用法 先定义私有变量,然后get取值,set赋值 c#的惯用法: value是上下文关键字(上下文关键字即根据具体语境判断是不是关键字),value只有在set中才有确切的含义,不在set中可以当作一个变量去使用。 private string _Name;//表盘名称 private string Name{ get; set; }//表盘名称,Name仍为私有变量,但是可以get,set其值 private string Name;同private string Name{ get; set; }是由区别的 private string Name{ get; set; }更灵活,其中get,set中是可以写东西的 仪表盘名字为空,抛异常 定义只读只写属性 DashBoard db = new DashBoard();----- 其中DashBoard()就是一个构造器(也可以叫构造方法,构造函数) 构造方法不需要返回值(比较特殊) 在DashBoard类是否有中DashBoard()都不要及,如果没有,c#默认也给添加的。如果有自己在类中定义的构造方法,那么c#默认定义的原有的构造方法就不生效了。 以下例子,自己在类中的定义了自定义构造方法DashBoard(),默认在创建实例的时候就把仪表盘的名字定义好了。 重载 创建属性的时候可以初始化赋值 构造函数可以相互调用(工作中可能会用到) 对象初始化器: DashBoard db = new DashBoard() {Name="XX" }; 有很多方法只用一次,就可以定义匿名对象,没有名字。不用额外建自己的类型,直接打印一些东西很方便 对象初始化同匿名对象很像。上方对象初始化中用var是因为,c#会根据Dashboard判断类型是Dashboard,所以可以不用明确定义类型。 class--类型 字段/属性共享 static public long Sum { get; set; }//总计数,添加static就代表资源共享,实例中调用直接用Dashboard.Sum()即可调用,用实例名字调用会报错 public static long Sum { get; set; } 意思一致 static是指程序加载第一次的时候,类第一次做的事。 static 方法名 ----static只能调用static的方法/字段/属性,无法调用动态的方法/字段/属性。 动态可以调用动态和static的方法/字段/属性 静态构造器 可以直接对static成员变量进行赋值 static 类名----无法创造静态类的实例,不够灵活,那么这个类是唯一的不可变的,内容也比较固定 const多用于常量,编译时确定数值必须确定, readonly是运行时给值,且无法改变 分布类--partial class Dashboard----多人一起作业一个类时用到 分布方法必须在分布类中 partial方法必须是void类型 【c#.Net】类:面向对象 标签:ext empty sys pre 互调 task 方法 实例 静态 原文地址:https://www.cnblogs.com/zhuzhubaoya/p/12388810.html 1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using System.Text;
5 using System.Threading.Tasks;
6
7 namespace test6
8 {
9 class DashBoard//仪表盘
10 {
11 public string Name;//表盘名称
12 private double Value;//当前表值,外部应该不能设置表盘读数
13 List 零件s;
14
15 public void Reset()
16 {
17 Value = 0;
18 Console.WriteLine("表盘复位完成");
19
20 }
21 public void Rotate(double angle)//指针转动
22 {
23 Value = angle;
24 Console.WriteLine("转动了{0}度", angle);
25 }
26
27
28 public void ShowValue()
29 {
30 Console.WriteLine("当前表盘读数{0}度", Value);
31
32 }
33 }
34 class 零件 { }
35
36 //值类型,引用类型 int string list
37 class Program{
38 static void Main(string[] args)
39 {
40 DashBoard db = new DashBoard();//仪表盘实例化,开辟一段连续的内存区域,首地址返回给db(一个实例,一个引用类型)这个引用
41 db.Name = "速度表盘";
42 db.Reset();
43 db.Rotate(10.0);
44 db.ShowValue();
45 Console.Read();
46 }
47 }
48 }
public string Name
{
get { return _Name; }
set { _Name = value; }
}
--------为了简化get,set写法,c#再次提出了一个叫做自动属性的说法,上方代码可以简写为以下一句话即可: 1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using System.Text;
5 using System.Threading.Tasks;
6
7 namespace test6
8 {
9 class DashBoard//仪表盘
10 {
11 private string _Name;
12 private double Value;//当前表值,外部应该不能设置表盘读数
13 private List 零件s;
14 public string Name {
15 get { return _Name; }//set打开,get也需要打开;
16 set
17 {if(string.IsNullOrEmpty(value))
18 {
19 try
20 {
21 throw new ArgumentNullException();
22 }
23 catch (Exception ex)
24 {
25 Console.WriteLine(ex);
26
27 }
28
29 }
30 _Name = value;
31 }
32 }//表盘名称
33
34
35 public double GetValue()
36 {
37 return this.Value;//这里的this消除歧义,指当前Dashboard的Value
38 }
39
40 public void Reset()
41 {
42 Value = 0;
43 Console.WriteLine("{0}表盘复位完成",this.Name);
44
45 }
46 public void Rotate(double angle)//指针转动
47 {
48 Value = angle;
49 Console.WriteLine("转动了{0}度", angle);
50 }
51
52
53 public void ShowValue()
54 {
55 Console.WriteLine("当前表盘读数{0}度", Value);
56
57 }
58
59 //将表盘读数存储到数据库
60 public bool Save() //将表盘读数存储到数据库
61
62 {
63 数据库 dataBase = new 数据库();
64 return dataBase.Store(this);//this表示保存当前Dashboard实例化的各个值到数据库
65 }
66
67 }
68 class 零件 { }
69 class 数据库
70 {
71 public bool Store(DashBoard db)
72 {
73 return true;
74 }
75 }
76 //值类型,引用类型 int string list
77 class Program{
78 static void Main(string[] args)
79 {
80 DashBoard db = new DashBoard();//仪表盘实例化,开辟一段连续的内存区域,首地址返回给db(一个实例,一个引用类型)这个引用
81 db.Name = "";
82 db.Reset();
83 db.Rotate(10.0);
84 db.ShowValue();
85 Console.Read();
86 }
87 }
88 }
1 //外部访问权限必须比里面的大,get前是private,set前是public,所以这个是一个只读属性
2 public string Name {
3 private get { return _Name; }//set打开,get也需要打开;
4 public set
5 {if(string.IsNullOrEmpty(value))
6 {
7 throw new ArgumentNullException();
8 }
9
10 }
11 _Name = value;
12 }
13 }//表盘名称
14 //外部访问权限必须比里面的大,set前是private,get前是public,所以这个是一个只写属性
15 public string Name {
16 private get { return _Name; }//set打开,get也需要打开;
17 public set
18 {if(string.IsNullOrEmpty(value))
19 {
20 throw new ArgumentNullException();
21 }
22
23 }
24 _Name = value;
25 }
26 }//表盘名称
同
下一篇:Windows10自带截图