对象和类型(结构、弱引用、扩展方法)_.NET_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > .NET > 对象和类型(结构、弱引用、扩展方法)

对象和类型(结构、弱引用、扩展方法)

 2017/7/30 2:38:44  derickzhao  程序员俱乐部  我要评论(0)
  • 摘要:1publicclassProgram12{3#region结构4//结构是值类型,存储在栈上5//1:结构中的成员变量不能有初始值6//2:结构中不能声明无参数构造函数7structExample8{9//publicintWidth=1;//错误10//publicintHeight=1;//错误1112publicintWidth;//正确13publicintHeight;//正确1415//错误16//publicExample()17//{1819//
  • 标签:方法
class="code_img_closed" src="/Upload/Images/2017073002/0015B68B3C38AA5B.gif" alt="">
 1 public class Program1
 2     {
 3         #region 结构
 4         //结构是值类型,存储在栈上
 5         //1:结构中的成员变量不能有初始值
 6         //2:结构中不能声明无参数构造函数
 7         struct Example
 8         {
 9             //public int Width = 1;//错误
10             //public int Height = 1;//错误
11 
12             public int Width;//正确
13             public int Height;//正确
14 
15             //错误
16             //public Example()
17             //{
18 
19             //}
20 
21             //正确
22             public Example(int width, int height)
23             {
24                 Width = width;
25                 Height = height;
26             }
27         }
28         #endregion
29 }
logs_code_collapse">结构
 1 public class Program1
 2     {
 3         public class MyClass
 4        {
 5            public int value { get; set; }
 6        }
 7         
 8         static void Main(string[] args)
 9         {
10             //一般实例化类型的时候,垃圾回收器一般不会清理对象的内存
11             //MyClass myClass = new MyClass();//这种声明属于强引用
12 
13             #region 弱引用
14             //弱引用实例化的时候,垃圾回收器可能会回收掉对象释放内存
15             //所以使用的时候,需要判断应用是否存在
16 
17             WeakReference reference = new WeakReference(new MyClass());
18 
19             MyClass myClass = reference.Target as MyClass;
20 
21             if (myClass != null)
22             {
23                 myClass.value = 10;
24 
25                 Console.WriteLine(myClass.value);
26             }
27 
28             //回收
29             GC.Collect();
30 
31             if (reference.IsAlive)
32             {
33                 myClass = reference.Target as MyClass;
34 
35                 myClass.value = 1;
36 
37                 Console.WriteLine(myClass.value);
38             }
39             else
40             {
41                 Console.WriteLine("引用不存在");
42             }
43             
44             #endregion
45             
46         }
47     }    
48 }
弱引用
 1 public class Program1
 2 {
 3     public class MyClass
 4     {
 5         public int Value { get; set; }
 6     }
 7 
 8     #region 扩展方法
 9 
10     /// <summary>
11     /// MyClass的扩展方法;扩展方法必须是静态的,如果扩展方法与原方法重名,
12     /// 优先调用原方法;注意this
13     /// </summary>
14     public static class MyClassExtension
15     {
16         public static int GetValue(this MyClass myClass, int addValue)
17         {
18             return myClass.Value + addValue;
19         }
20 
21     }
22 
23     #endregion
24 }
扩展方法

 

发表评论
用户名: 匿名