zoukankan      html  css  js  c++  java
  • 第七章 运算符和类型强制转换

    SimpleCurrency

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    namespace SimpleCurrency
    {
        class Program
        {
               struct Currency
               {
                  public uint Dollars;
                  public ushort Cents;
                  
                  public Currency(uint dollars, ushort cents)
                  {
                     this.Dollars = dollars;
                     this.Cents = cents;
                  }
                  
                  public override string ToString()
                  {
                     return string.Format("${0}.{1,-2:00}", Dollars,Cents);
                  }
    
                  public static implicit operator float(Currency value)
                  {
                      return value.Dollars + (value.Cents / 100.0f);
                  }
    
                  public static explicit operator Currency(float value)
                  {
                      uint dollars = (uint)value;
                      ushort cents = (ushort)((value - dollars) * 100);
                      return new Currency(dollars, cents);
                  }
    
               }
    
    
            static void Main(string[] args)
            {
               try
               {
                  Currency balance = new Currency(50,35);
                  
                  Console.WriteLine(balance);
                  Console.WriteLine("balance is " + balance);
                  Console.WriteLine("balance is (using ToString()) " + balance.ToString());
                  
                  float balance2= balance;
                  
                  Console.WriteLine("After converting to float, = " + balance2);
                  
                  balance = (Currency) balance2;
                  
                  Console.WriteLine("After converting back to Currency, = " + balance);
                  Console.WriteLine("Now attempt to convert out of range value of " +
                                    "-$50.50 to a Currency:");
                  
                  checked
                  {
                     balance = (Currency) (-50.50);
                     Console.WriteLine("Result is " + balance.ToString());
                  }
               }
               catch(Exception e)
               {
                  Console.WriteLine("Exception occurred: " + e.Message);
               }
    
               Console.ReadLine();
            }
        }
    }
    View Code

    SimpleCurrency2

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    namespace SimpleCurrency
    {
        class Program
        {
            struct Currency
            {
                public uint Dollars;
                public ushort Cents;
    
                public Currency(uint dollars, ushort cents)
                {
                    this.Dollars = dollars;
                    this.Cents = cents;
                }
    
                public override string ToString()
                {
                    return string.Format("${0}.{1,-2:00}", Dollars, Cents);
                }
    
                public static implicit operator float(Currency value)
                {
                    return value.Dollars + (value.Cents / 100.0f);
                }
    
                public static explicit operator Currency(float value)
                {
                    uint dollars = (uint)value;
                    ushort cents = (ushort)((value - dollars) * 100);
                    return new Currency(dollars, cents);
                }
    
                public static implicit operator Currency(uint value)
                {
                    return new Currency(value, 0);
                }
    
                public static implicit operator uint(Currency value)
                {
                    return value.Dollars;
                }
    
    
            }
    
    
            static void Main(string[] args)
            {
                try
                {
                       Currency balance = new Currency(50,35);
          
                       Console.WriteLine(balance);
                       Console.WriteLine("balance is " + balance);
                       Console.WriteLine("balance is (using ToString()) " + balance.ToString());                    
    
                       float balance2 = balance;
    
                       Console.WriteLine("After converting to float, = " + balance2);
    
                       balance = (Currency)balance2;
    
                       Console.WriteLine("After converting back to Currency, = " + balance);
                       Console.WriteLine("Now attempt to convert out of range value of " +
                                         "-$50.50 to a Currency:");
                  
                    checked
                    {
                        balance = (Currency)(-50.50);
                        Console.WriteLine("Result is " + balance.ToString());
                    }
                }
                catch (Exception e)
                {
                    Console.WriteLine("Exception occurred: " + e.Message);
                }
    
                Console.ReadLine();
            }
        }
    }
    View Code

    VectorStruct

    using System;
    using Wrox.ProCSharp.OOCSharp;
    
    namespace VectorStruct
    {
        internal class MainEntryPoint
        {
            private static void Main()
            {
                Vector vect1, vect2, vect3;
    
                vect1 = new Vector(3.0, 3.0, 1.0);
                vect2 = new Vector(2.0, -4.0, -4.0);
                vect3 = vect1 + vect2;
    
                Console.WriteLine("vect1 = " + vect1.ToString());
                Console.WriteLine("vect2 = " + vect2.ToString());
                Console.WriteLine("vect3 = " + vect3.ToString());
    
                Console.ReadLine();
            }
        }
    }
    
    namespace Wrox.ProCSharp.OOCSharp
    {
        struct Vector
        {
            public double x, y, z;
    
            public Vector(double x, double y, double z)
            {
                this.x = x;
                this.y = y;
                this.z = z;
            }
    
            public Vector(Vector rhs)
            {
                x = rhs.x;
                y = rhs.y;
                z = rhs.z;
            }
    
            public override string ToString()
            {
                return "( " + x + " , " + y + " , " + z + " )";
            }
    
            public static Vector operator +(Vector lhs, Vector rhs)
            {
                Vector result = new Vector(lhs);
                result.x += rhs.x;
                result.y += rhs.y;
                result.z += rhs.z;
    
                return result;
            }
        }
    }
    View Code

    VectorStructMoreOverloads

    using System;
    using Wrox.ProCSharp.OOCSharp;
    
    namespace VectorStruct
    {
        internal class MainEntryPoint
        {
            private static void Main()
            {
                // stuff to demonstrate arithmetic operations
                Vector vect1, vect2, vect3;
                vect1 = new Vector(1.0, 1.5, 2.0);
                vect2 = new Vector(0.0, 0.0, -10.0);
    
                vect3 = vect1 + vect2;
    
                Console.WriteLine("vect1 = " + vect1);
                Console.WriteLine("vect2 = " + vect2);
                Console.WriteLine("vect3 = vect1 + vect2 = " + vect3);
                Console.WriteLine("2*vect3 = " + 2 * vect3);
    
                vect3 += vect2;
    
                Console.WriteLine("vect3+=vect2 gives " + vect3);
    
                vect3 = vect1 * 2;
    
                Console.WriteLine("Setting vect3=vect1*2 gives " + vect3);
    
                double dot = vect1*vect3;
    
                Console.WriteLine("vect1*vect3 = " + dot);
    
                Console.ReadLine();
            }
        }
    }
    
    namespace Wrox.ProCSharp.OOCSharp
    {
        struct Vector
        {
            public double x, y, z;
    
            public Vector(double x, double y, double z)
            {
                this.x = x;
                this.y = y;
                this.z = z;
            }
    
            public Vector(Vector rhs)
            {
                x = rhs.x;
                y = rhs.y;
                z = rhs.z;
            }
    
            public override string ToString()
            {
                return "( " + x + " , " + y + " , " + z + " )";
            }
    
            public static Vector operator +(Vector lhs, Vector rhs)
            {
                Vector result = new Vector(lhs);
                result.x += rhs.x;
                result.y += rhs.y;
                result.z += rhs.z;
    
                return result;
            }
    
            public static Vector operator *(double lhs, Vector rhs)
            {
                return new Vector(lhs * rhs.x, lhs * rhs.y, lhs * rhs.z);
            }
    
            public static Vector operator *(Vector lhs, double rhs)
            {
                return rhs * lhs;
            }
    
            public static double operator *(Vector lhs, Vector rhs)
            {
                return lhs.x * rhs.x + lhs.y + rhs.y + lhs.z * rhs.z;
            }
    
        }
    }
    View Code
  • 相关阅读:
    JProfiler_SN_8_x key
    java格式化百分比
    获取每月第一天最后一天 java
    java 获取昨天日期
    eclipse git提交代码
    SIT与UAT的分别
    Spring <context:annotation-config/> 说明
    Hibernate日期映射类型
    Oracle查询备注信息
    Log4J入门
  • 原文地址:https://www.cnblogs.com/liuslayer/p/7017091.html
Copyright © 2011-2022 走看看