第三章 对象和类型

Posted liuslayer

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第三章 对象和类型相关的知识,希望对你有一定的参考价值。

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;
      }
   }
}
View Code

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;
      }
   }
}
View Code

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;
      }
   }
}
View Code

 

以上是关于第三章 对象和类型的主要内容,如果未能解决你的问题,请参考以下文章

从 TypeScript 类型定义或 GraphQL 片段定义生成 JavaScript 空对象

第三章 对象和类型

使用嵌套片段和动画对象

第三节:TypeScript对象类型

软件构造课程提纲

第三章:继承/抽象类/接口