I need this translated(Js to C#).

I am trying to learn how to do C# but I watched a tutorial how to do this script but he did it in Js, so I need it translated can anyone help! Thank you!

	var spawnPoint : Transform ;
	var speed : int;
	var nextFire = 0.0f;
	var fireRate = 0.1f;
	var ammo = 150;
	var ammoText : GUIText;
	var shotSound : AudioSource;
	var wood : Transform;
	var sand : Transform;
	var dirt : Transform;
	var water : Transform;
	var enemy : Transform;
	var range = 100;

	
	// Update is called once per frame
	function Update () {
		
		if(Input.GetKey(KeyCode.Mouse0) && Time.time > nextFire)
		{
			if(ammo > 0)
			{
				Shot();
				audio.Play();
				ammo --;
			}
		}
	
	}

	function Shot()
	{
		nextFire = Time.time + fireRate;

		var hit :  RaycastHit; 
		var fwd = spawnPoint.TransformDirection(Vector3.forward);
		
		Debug.DrawRay(spawnPoint.position, fwd);

		if(Physics.Raycast(spawnPoint.position, fwd, hit, range))
		{
		   
		   if(hit.collider.tag == "Dirt")
		   {
		       Instantiate(dirt, hit.point, Quaternion.FromToRotation(Vector3.forward, hit.normal));
		   }
		    if(hit.collider.tag == "Sand")
		   {
		       Instantiate(sand, hit.point, Quaternion.FromToRotation(Vector3.forward, hit.normal));
		   }
		    if(hit.collider.tag == "Wood")
		   {
		       Instantiate(wood, hit.point, Quaternion.FromToRotation(Vector3.forward, hit.normal));
		   }
		     if(hit.collider.tag == "Water")
		   {
		       Instantiate(water, hit.point, Quaternion.identity);
		   }
		       if(hit.collider.tag == "Enemy")
		   {
		       Instantiate(enemy, hit.point, Quaternion.FromToRotation(Vector3.forward, hit.normal));
		   }
		}

	}

	function OnGUI()
	{
		ammoText.text = "Ammo: " + ammo.ToString();
	}

I will do it and explain, but first I ask, why do you need this translated if you don’t know C#?
Heres how to translate:

In C#, you have to include the files you use, which would be the UnityEngine and the basic System.Collections:

using UnityEngine;
using System.Collections

In UnityScript, the code is contained within a class behind the scenes, without you actually having to define the class, and in the class must be the name of the file. (at least, in Unity.):

public class NameOfScript : MonoBehaviour {

}

Variables in C# are statically typed, meaning you have to declare the variable using the type in place of the js var, for example:

int example;
string helloWorld = "SUP world";

Functions in C# are stated with a return type (when you return, what type it is, int, float, etc.) when no return type is needed, use void:

void Update() {
     //stuff
}

Like js, C# is the same with the adding, subtracting, etc.

//javascript AND C# the same
a = a+b;
b--;
b *= 11;
a = ((b*a) + a*a*a);

Using all of what I typed, your code is this:

using UnityEngine;
using System.Collections


public class NameOfScript : MonoBehaviour {

	Transform spawnPoint;
	int speed;
	float nextFire = 0.0f;
	float fireRate = 0.1f;
	int ammo = 150;
	GUIText ammoText;
	AudioSource shotSound;
	Transform wood;
	Transform sand;
	Transform dirt;
	Transform water;
	Transform enemy;
	int range = 100;


	// Update is called once per frame
	function Update () {
		if(Input.GetKey(KeyCode.Mouse0) && Time.time > nextFire) {
			if(ammo > 0) {
				Shot();
				audio.Play();
				ammo --;
			}
		}
	}

	void Shot() {
		nextFire = Time.time + fireRate;

		RaycastHit hit; 
		Vector3 fwd = spawnPoint.TransformDirection(Vector3.forward);

		Debug.DrawRay(spawnPoint.position, fwd);

		if(Physics.Raycast(spawnPoint.position, fwd, out hit, range)) {
			if(hit.collider.tag == "Dirt") {
			  Instantiate(dirt, hit.point, Quaternion.FromToRotation(Vector3.forward, hit.normal));
			}
			if(hit.collider.tag == "Sand") {
			  Instantiate(sand, hit.point, Quaternion.FromToRotation(Vector3.forward, hit.normal));
			}
			if(hit.collider.tag == "Wood") {
			  Instantiate(wood, hit.point, Quaternion.FromToRotation(Vector3.forward, hit.normal));
			}
			if(hit.collider.tag == "Water") {
			  Instantiate(water, hit.point, Quaternion.identity);
			}
			if(hit.collider.tag == "Enemy") {
			  Instantiate(enemy, hit.point, Quaternion.FromToRotation(Vector3.forward, hit.normal));
			}
		}

	}

	void OnGUI() {
		ammoText.text = "Ammo: " + ammo.ToString();
	}
}