第三章 对象和类型

MathTest

using System;

namespace Wrox
{
   class MainEntryPoint
   {
      static void Main()
      {
         // Try calling some static functions
         Console.WriteLine("Pi is " + MathTest.GetPi());
         int x = MathTest.GetSquareOf(5);
         Console.WriteLine("Square of 5 is " + x);

         // Instantiate at MathTest object
         MathTest math = new MathTest();   // this is C#‘s way of
                                           // instantiating a reference type

         // Call non-static methods
         math.Value = 30;
         Console.WriteLine(
            "Value field of math variable contains " + math.Value);
         Console.WriteLine("Square of 30 is " + math.GetSquare());
      }
   }

   // Define a class named MathTest on which we will call a method
   class MathTest
   {
      public int Value;

      public int GetSquare()
      {
         return Value*Value;
      }

      public static int GetSquareOf(int x)
      {
         return x*x;
      }

      public static double GetPi()
      {
         return 3.14159;
      }
   }
}

MathTestWeakReference

using System;

namespace Wrox
{
   class MainEntryPoint
   {
      static void Main()
      {
         // Instantiate a weak reference to MathTest object
         WeakReference mathReference = new WeakReference(new MathTest());
         MathTest math;
         if(mathReference.IsAlive)
         {
            math = mathReference.Target as MathTest;
            math.Value = 30;
            Console.WriteLine(
               "Value field of math variable contains " + math.Value);
            Console.WriteLine("Square of 30 is " + math.GetSquare());

         }
         else
         {
            Console.WriteLine("Reference is not available.");
         }

         GC.Collect();

         if(mathReference.IsAlive)
         {
            math = mathReference.Target as MathTest;
         }
         else
         {
            Console.WriteLine("Reference is not available.");
         }
      }
   }

   // Define a class named MathTest on which we will call a method
   class MathTest
   {
      public int Value;

      public int GetSquare()
      {
         return Value*Value;
      }

      public static int GetSquareOf(int x)
      {
         return x*x;
      }

      public static double GetPi()
      {
         return 3.14159;
      }
   }
}

ParameterTest

using System;

namespace Wrox
{
   class ParameterTest
   {
      static void SomeFunction(int[] ints, int i)
      {
         ints[0] = 100;
         i = 100;
      }

      public static int Main()
      {
         int i = 0;
         int[] ints = { 0, 1, 2, 4, 8 };
         // Display the original values
         Console.WriteLine("i = " + i);
         Console.WriteLine("ints[0] = " + ints[0]);
         Console.WriteLine("Calling SomeFunction...");

         // After this method returns, ints will be changed,
         // but i will not
         SomeFunction(ints, i);
         Console.WriteLine("i = " + i);
         Console.WriteLine("ints[0] = " + ints[0]);
         return 0;
      }
   }
}

时间: 2024-10-12 17:22:51

第三章 对象和类型的相关文章

c#高级编程第七版 学习笔记 第三章 对象和类型

第三章 对象和类型 本章的内容: 类和结构的区别 类成员 按值和按引用传送参数 方法重载 构造函数和静态构造函数 只读字段 部分类 静态类 Object类,其他类型都从该类派生而来 3.1 类和结构 类和结构都是创建对象的模板,每个对象都包含数据,并提供了处理和访问数据的方法 结构和类的区别是他们在内存中的存储方式.访问方式(类是存储在堆上的引用类型,而结构是存储在栈上的值类型)和他们的一些特征(如结构不支持继承).较小的数据类型使用结构可提高性能.但在语法上,结构和类非常相似,主要的区别是使用

《Java并发编程实战》第三章 对象的共享 读书笔记

一.可见性 什么是可见性? Java线程安全须要防止某个线程正在使用对象状态而还有一个线程在同一时候改动该状态,并且须要确保当一个线程改动了对象的状态后,其它线程能够看到发生的状态变化. 后者就是可见性的描写叙述即多线程能够实时获取其它线程改动后的状态. *** 待补充   两个工人同一时候记录生产产品总数问题 1. 失效数据 可见性出现故障就是其它线程没有获取到改动后的状态,更直观的描写叙述就是其它线程获取到的数据是失效数据. 2. 非原子64位操作 3. 加锁与可见性 比如在一个变量的读取与

Objective-C 编程全解-第04章 对象的类型和动态绑定

第04章 对象的类型和动态绑定 Objective-C的一个重要特征就是动态性,本章将对Objective-C的动态类型(dynamic typing)和动态绑定(dynamic binding)进行说明. 4.1 动态绑定 4.1.1 什么是动态绑定 Objective-C中的消息是在运行时才去绑定的.运行时系统首先会确定接受者的类型(动态类型识别),然后根据消息名在类的方法列表里选择相应的方法执行,如果没有找到就到父类中去继续寻找,假如一直找到NSObject也没有找到就要调用的方法,就会报

第三章 证券投资基金类型

第一节 证券投资基金分类概述 一.证券投资基金的分类的意义 二.证券投资基金分类的困难性 三.证券投资基金的分类标准与分类介绍 (一).根据法律形式分类 契约型基金 公司型基金 (二).根据运作方式分类 封闭式基金和开放式基金 (三).根据投资对象分类 : 股票基金,指以股票为主要投资对象的基金,基金资产80%以上投资于股票的的为股票基金. 债券基金,指80%以上投资于债券的,为债券基金. 货币基金,仅投资于货币市场的基金为货币基金. 混合基金,同时以股票.债券等为投资对象,以期通过不同资产类别

[Java Concurrency in Practice]第三章 对象的共享

对象的共享 第二章介绍了如何通过同步来避免多个线程在同一时刻访问相同的数据,而第三章则介绍如何共享和发布对象,从而使它们能够安全地由多个线程同时访问.这两章合在一起就形成了构建线程安全类以及通过java.util.concurrent类库来构建并发应用程序的重要基础. synchronized不仅仅只有原子性,还具有内存可见性.我们不仅希望防止某个线程正在使用对象状态而另一个线程在同时修改该状态,而且希望确保当一个线程修改了对象状态后,其他线程能够看到发生的状态变化.如果没有同步,那么这种情况就

第三章:Javascript类型、值和变量。

计算机程序的运行需要对值(value)比如数字3.14或者文本"hello world"进行操作,在编程语言中,能够表示并操作的值的类型叫做数据类型(type),编程语言最基本的特性就是主持多种数据类型.当程序需要将值保持起来以备将来使用时,便将其赋值给(将值“保存”到)一个变量(variable).变量是一个值的符号名称,可以通过名称获得对值的引用.变量的工作机制是编程语言的令一个基本特性.本章将参照上节帮助理解本章内容,后续将更深入的讲解. javascript的数据分为两类:原始

MDN——javascript——入门——第三章对象——对象.构造函数.原型链.继承——知识点总结

对象Object 由属性property(变量).方法method(函数)组成 var objectName = { member1Name : member1Value, member2Name : member2Value, member3Name : member3Value } member(成员)的值是任意的, 一个如上所示的对象被称之为对象的字面量(literal)——手动的写出对象的内容来创建一个对象.不同于从类实例化一个对象,我们会在后面学习这种方式. 访问对象成员 1.点表示法

MDN——javascript——入门——第三章对象——json——知识点总结

1. JSON:javascript object notation(js 对象表示法) 将结构化数据表示为JavaScript对象的标准格式, 通常用于在网站上表示和传输数据 (从服务器向客户端发送一些数据,因此可以将其显示在网页上) Douglas Crockford(提出推广了json)     虽然它是基于JavaScript语法,它可以独立于JavaScript的使用,许多编程环境有 读取(解析),并生成JSON的能力.(例如php)   JSON对象可以存储在它自己的文件,根本上只是

第三章 对象(JavaScript:语言精粹)

对象是属性的容器,其中每个属性都有名字和值. 3.0. 概览:对象字面量 | 检索 | 更新 | 引用 | 原型 | 反射 | 枚举 | 删除 | 减少全局变量污染 3.1. 对象字面量 一个对象字面量,就是包围在一对花括号中的零个或多个“名/值”对. // 3.1 code 1 var empty_object = {}; var stooge = { "first-name": "Jerome", "last-name": "How