//class 是引用类型,structs是值类型
//struct = 直接拷贝一份数据
//class = 传递引用
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
struct Vector3
{
public float x;
public float y;
public float z;
public Vector3(float x,float y,float z)
{
this.x = x;
this.y = y;
this.z = z;
}
public static Vector3 operator*(Vector3 v1, Vector3 v2)
{
return new Vector3(v1.x * v2.x,v1.y * v2.y , v1.z * v2.z);
}
public static Vector3 operator *(Vector3 v1, float value)
{
return new Vector3(v1.x * value, v1.y * value, v1.z * value);
}
public override string ToString()
{
return "(" + x.ToString() + "," + y.ToString() + "," + z.ToString() + ")";
}
}
class Program
{
static void Main(string[] args)
{
Vector3 v1 = new Vector3(1, 1, 1);
Vector3 v2 = v1;
Console.WriteLine(v1.ToString() + " " + (v2).ToString());
//v1 *= 2;
v1.x = 2;
v2.y = 2;
Console.WriteLine(v1.ToString() + " " + v2.ToString());
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
class Vector3
{
public float x;
public float y;
public float z;
public Vector3(float x,float y,float z)
{
this.x = x;
this.y = y;
this.z = z;
}
public static Vector3 operator*(Vector3 v1, Vector3 v2)
{
return new Vector3(v1.x * v2.x,v1.y * v2.y , v1.z * v2.z);
}
public static Vector3 operator *(Vector3 v1, float value)
{
return new Vector3(v1.x * value, v1.y * value, v1.z * value);
}
public override string ToString()
{
return "(" + x.ToString() + "," + y.ToString() + "," + z.ToString() + ")";
}
}
class Program
{
static void Main(string[] args)
{
Vector3 v1 = new Vector3(1, 1, 1);
Vector3 v2 = v1;
Console.WriteLine(v1.ToString() + " " + (v2).ToString());
//v1 *= 2;
v1.x = 2;
v2.y = 2;
Console.WriteLine(v1.ToString() + " " + v2.ToString());
}
}
}