C# trippel funktion istället för en funktion
Hej,
Jag har stött på ett simpelt C# program som dock fick mig att bli förvirrad endå.
_________
//Microsoft (R) Visual C# Compiler version 3.4.0-beta4-19562-05 (ff930dec)
//Copyright (C) Microsoft Corporation. All rights reserved.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text.RegularExpressions;
namespace Rextester
{
public class Program
{
private static void Main(string[] args)
{
double fee = CalculateFee();
Console.WriteLine("Fee is {0}", fee);
}
private static double CalculateFee(double dailyRate=500.0, int numberOfDays=1)
{
return dailyRate*numberOfDays;
}
private static double CalculateFee(double dailyRate = 500.0)
{
int defaultNoOfDays = 1;
return dailyRate*defaultNoOfDays;
}
private static double CalculateFee()
{
double dailyRate = 400.0;
int defaultNoOfDays = 1;
return dailyRate*defaultNoOfDays;
}
}
}
___________
Det är frågan om ett program som har en funktion som heter CalculateFee() och den finns utskriven 3 gånger av någon för mig okänd anledning och varje gång ser den typ likadan ut bortsett från ett värde, dailyRate. Om jag skriver in CalculateFee(dailyRate : 375.0) eller CalculateFee(numberOfDays : 4) så får jag olika svar. Fast eftersom den tredje CalculateFee() funktionen har värdet dailyRate = 400 så ser det ut som att en idiot har gjort dessa funktioner då han inte bestämt sig för ett värde utan har två olika värden, 500 och 400, samt gjort 3 funktioner istället för 1.
Den sista funktionen med värdet dailyRate = 400 används om jag skriver in "dailyRate : 375.0" eller "numberOfdays : 4". Alltså verkar det finnas en regel i C# kompilatorn att om man skapar en funktion med samma namn flera gånger då gäller endast den sista funktionen av dem alla, kan det stämma?