在下面的代码中,我在一个具有相同名称且都相同的方法中创建了2个Funcs 1)Class级别和2)。当我构建解决方案时,它不会抛出任何错误,并且执行得很好。现在,我有兴趣调用类成员的Func,但是我没有找到方法。有人可以帮我吗。
public class TaskDemo
{
public int NumberStrat { get; set; }
public int NumberEnd { get; set; }
Func<int, string> isNumerEvenOdd = (i) =>
{
return i.ToString();
};
public void print()
{
List<int> NumbersList = new List<int>();
for (int i = 0; i < 1000; i++)
{
NumbersList.Add(i);
}
Func<int, string> isNumerEvenOdd = (i) =>
{
return "abc";
};
Parallel.ForEach(NumbersList, (i) => Console.WriteLine(isNumerEvenOdd(i)));
}
}
使用this关键字。
Parallel.ForEach(NumbersList, (i) => Console.WriteLine(this.isNumerEvenOdd(i)));
示例-> https://onlinegdb.com/SkRpXyCRH
有关更多信息-> https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/this
实际上,警告是您本地声明的Func<int, string> isNumerEvenOdd
隐藏了在类级别声明的Func<int, string> isNumerEvenOdd
,并且从未使用过。因此,本地成员只需隐藏类成员即可正常工作。
之所以没有编译器错误,是因为您在不同的作用域(类和方法)中用相同的名称定义了变量。当您尝试在相同作用域中使用相同名称定义变量时,编译器显示错误。