|
@@ -0,0 +1,41 @@
|
|
1
|
+> what,什么是实例
|
|
2
|
+
|
|
3
|
+实际案例。在面向对象的高级语言(C#, Java)中,需要定义类型。比如说类,类是模型、模具。在做蛋糕的时候需要模具,然后根据模具可以做出很多蛋糕。那么,类就是模具,实例就是模具做出来的蛋糕。
|
|
4
|
+
|
|
5
|
+```
|
|
6
|
+public class Person
|
|
7
|
+{
|
|
8
|
+ public int Id{get;set;}
|
|
9
|
+ public string Name{get;set;}
|
|
10
|
+ public decimal Price{get;set;}
|
|
11
|
+}
|
|
12
|
+
|
|
13
|
+var person1 = new Person{Id=1, Name="person1", Price=2.0m};
|
|
14
|
+var person2 = new Person{Id=2, Name="person2", Price=3.0m};
|
|
15
|
+```
|
|
16
|
+以上person1和person2就是Person的实例。
|
|
17
|
+
|
|
18
|
+再来举例。
|
|
19
|
+
|
|
20
|
+```
|
|
21
|
+ var model = new MyViewModel(); //实例化一个MyViewModel叫做model
|
|
22
|
+
|
|
23
|
+ IQueryable<Person> persons= _context.Person.Where(t=>t.Price > 2.5m);
|
|
24
|
+ Person person1 = persons.FirstOrDefault(t =t.Name == "person1");
|
|
25
|
+ Console.WrtieLine(person1.Name);
|
|
26
|
+ Console.ReadKey();
|
|
27
|
+```
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+> why,为什么需要实例
|
|
31
|
+
|
|
32
|
+因为类是一种定义,无法被直接引用。所需需要实例化类在程序中调用。而且一个类有不同的表现形式,就像用摸具做蛋糕一样,有些蛋糕是白色,有些是粉色,所以实例的属性值可以是不一样的。
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+总之,通过一次性定义类,然后可以生成这个类的不同实例。
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+> how, 在内存方面如何实现的
|
|
39
|
+
|
|
40
|
+在C#,是一种托管式的,C#内部会为我们维护一个托管的堆栈,值类型(int, bool, short, long, struct)保存在栈上,引用类型(类, string)保存在堆上。
|
|
41
|
+![实例在托管堆栈](./imgs/sl.png)
|