Софтуерно Инженерство
Loading...
+ Нов въпрос
gim13 avatar gim13 5 Точки

Въпрос за Knights of Honor

Здравейте.

Моля за разяснение, защо едното от решенията "съдията" приема,а другото не?

Във VS и двата варианта работят коректно.

Условие:

Write a program that reads a collection of names as strings from the console, appends "Sir" in front of every name and prints it back on the console. Use Action<T>.

Решение1:

using System;
using System.Linq;

class Program
{
    static void Main()
    {
        Action<string> printAddSir = text => text
                .Split()
                .ToList()
                .ForEach(x => Console.WriteLine($"Sir {x}"));

        string text = Console.ReadLine();

        printAddSir(text);
    }
}

Решение2:

using System;
using System.Linq;


class Program
{
    static void Main()
    {
        Action<string[]> printAddSir = arr => arr
            .ToList()
            .ForEach(x => Console.WriteLine($"Sir {x}"));

        string[] text = Console.ReadLine().Split();

        printAddSir(text);
    }
}

Тагове:
0
C# Advanced
willystyle avatar willystyle 1585 Точки
 A local or parameter named 'text' cannot be declared in this scope because that name is used in an enclosing local scope to define a local or parameter.

Налага се да използваш друго име за променливата, иначе има колизия на имената.

using System;
using System.Linq;

class Program
{
    static void Main()
    {
        Action<string> printAddSir = _text => _text
                .Split()
                .ToList()
                .ForEach(x => Console.WriteLine($"Sir {x}"));

        string text = Console.ReadLine();

        printAddSir(text);
    }
}

 

0
gim13 avatar gim13 5 Точки

Здравей, willystyle.

След смяната на името всичко е наред.

Но все пак ми е любопитно, защо това е проблем за judge а за  VS не е?  

С благодарност:

Генади.

 

0