• 算术运算符的重载


    运算符重载的示例:Vector结构

    using System;
    
    namespace 运算符重载
    {
        class Program
        {
            static void Main(string[] args)
            {
            //    Console.WriteLine("Hello World!");
            // Vector vec1,vec2,vec3;
            // vec1 = new Vector(3.0,3.0,1.0);
            // vec2 = new Vector(2.0,-4.0,-4.0);
            // vec3 = vec1 + vec2;
            // System.Console.WriteLine($"vec1 = {vec1}");
            // System.Console.WriteLine($"vec2 = {vec2}");
            // System.Console.WriteLine($"vec3 = {vec3}");
    
            // double dou = 7;
            // Vector vec = new Vector(1.0,2.0,3.0);
            // Vector vec2 = dou * vec;
            // Vector vec3 = vec * dou;
            // System.Console.WriteLine($"{vec2}");
            // System.Console.WriteLine($"{vec3}");
    
            Vector vec1,vec2,vec3;
            vec1 = new Vector(1.0,1.5,2.0);
            vec2 = new Vector(0,0,-10);
            //vec3 = vec1 + vec2;
            vec3 = vec1 * 2;
            System.Console.WriteLine($"vec1 * vec2 = {vec1*vec3}");
            }
            
        }
    
        //声明结构(运算符重载用于结构和类时,其工作方式时一样的。)
        struct Vector{
            public double X{get;}
            public double Y{get;}
            public double Z{get;}
            public Vector(double x,double y,double z){
                X = x;
                Y = y;
                Z = z;
    
            }
            public Vector(Vector vector){
                X = vector.X;
                Y = vector.Y;
                Z = vector.Z;
    
            }
            public override string ToString()=>$"({X},{Y},{Z})";
            //+ 的运算符重载
            public static Vector operator + (Vector left,Vector right)=>
            new Vector(left.X + right.X,left.Y + right.Y,left.Z + right.Z);
            //* 的运算符重载
            public static Vector operator *(double left,Vector right)=>
            new Vector(left*right.X,left*right.Y,left*right.Z);
    
            public static Vector operator *(Vector left,double right)=>right * left;
    
            //内积
            public static double operator *(Vector left,Vector right)=>left.X*right.X+left.Y*right.Y+left.Z*right.Z;
            
    
        }
         
    }
  • 相关阅读:
    python+appium真机运行登录例子
    通过aapt查看apk包名和第一个启动的activity
    cf 17D Notepad 欧拉降幂
    主席树入门
    D2. Optimal Subsequences (Hard Version) 主席树
    cf 697C Lorenzo Von Matterhorn 思维
    2018南京现场赛K 随机输出
    2018徐州现场赛A
    洛谷p1137 模拟退火
    2018南京现场赛D 模拟退火
  • 原文地址:https://www.cnblogs.com/singhwong/p/11929664.html
Copyright © 2020-2023  润新知