如何在另一个函数中调用一个函数以改变1.函数

  • 本文关键字:函数 一个 改变 另一个 调用 c#
  • 更新时间 :
  • 英文 :


我正在尝试制作一个程序,其中您有一个工人列表,您可以在其中添加新工人和删除工人。我做了一个包含5个名字的函数。然后,我想创建第二个函数,向1添加2个新名称。函数。

public static void Zaposlenici()
{
List<string> imena = new List<string> { "Marko","Ivan","Miljenko","Josip","Luka"};
foreach (var ime in imena)
{
Console.WriteLine(ime);
}
}
public static void Izbornik()
{
Console.WriteLine("1. Zaposlenici u firmi");
Console.WriteLine("2. Dodaj novog zaposlenika");
Console.WriteLine("3. Izbrisite zaposlenika");
Console.WriteLine("0. Izlaz");
Console.WriteLine("--------------------");
Console.WriteLine("");
Console.WriteLine("Odaberite opciju: ");
}
public static void DodajZaposlenika()
{

List<string> NovaImena = new List<string> { "Francis", "Matea" };

}
public static void Opcije()
{
int opcija= Int32.Parse(Console.ReadLine());
switch (opcija)
{
case 1:
Zaposlenici();
break;
default:
break;
}
}
static void Main(string[] args)
{
Console.WriteLine("Pozdrav!");
Console.WriteLine("---------------");
Izbornik();
Opcije();
}
}

我只是尝试使用1。函数在2。所以我想我可以改变它,但我似乎不能使用从1的内容。函数

你可以很容易地修改你的函数列表,通过参数传递列表:

public class yourWindow : Window
{
public void yourFunction1()
{
List<string> imena = new List<string> { "Marko","Ivan","Miljenko","Josip","Luka"};
yourFunction2(imena);
}
public void yourFunction2(List<string> imena)
{
imena.Add("Aleksey");
}

这将添加到您的列表。

编辑:您也可以创建一个列表(公共或私有),将从任何函数可用:

public class YourMainWindow : Window //you have something like that
private imena{get;set;}=new List<string>();
public static void Zaposlenici()
{
this.imena = new List<string> { "Marko","Ivan","Miljenko","Josip","Luka"};
foreach (var ime in imena)
{
Console.WriteLine(ime);

}
}

public static void Izbornik()
{
Console.WriteLine("1. Zaposlenici u firmi");
Console.WriteLine("2. Dodaj novog zaposlenika");
Console.WriteLine("3. Izbrisite zaposlenika");
Console.WriteLine("0. Izlaz");
Console.WriteLine("--------------------");
Console.WriteLine("");
Console.WriteLine("Odaberite opciju: ");
}
public static void DodajZaposlenika()
{

this.imena.AddRange(new List<string> { "Francis", "Matea" });


}
public static void Opcije()
{
int opcija= Int32.Parse(Console.ReadLine());
switch (opcija)
{
case 1:
Zaposlenici();
break;

default:
break;
}
}

static void Main(string[] args)
{
Console.WriteLine("Pozdrav!");
Console.WriteLine("---------------");
Izbornik();
Opcije();
}
}
}

虽然您可以轻松地修改函数列表。但你不应该这么做。不,真的不要改变对象参数。这不是一种好的做法。下面是一个不会改变列表的解决方案:

演示
public static void Main()
{
yourFunction1();
}
public static void yourFunction1()
{
var imena = new List<string>{"Marko", "Ivan", "Miljenko", "Josip", "Luka"};
var imena2 = yourFunction2(imena);
Console.WriteLine(string.Join("n", imena2));
}
public static IEnumerable<string> yourFunction2(IEnumerable<string> imena)
{
return imena.Append("Francis").Append("Matea");
}
另一个解决方案是使用yield return和concat:

演示
public static void yourFunction1()
{
var imena = new List<string>{"Marko", "Ivan", "Miljenko", "Josip", "Luka"};
var imena2 = imena.Concat(yourFunction2());
Console.WriteLine(string.Join("n", imena2));
}
public static IEnumerable<string> yourFunction2()
{
yield return "Francis";
yield return "Matea";
}

最新更新