dhivya N Ответов: 3

Не удается преобразовать лямбда-выражение В тип bool


Я - новый ученик c#. Я хочу найти нечетное число или не использовать делегат анонимной функции. Я получаю вышеприведенную ошибку. Где я ошибаюсь?

Что я уже пробовал:

public delegate bool oddOREvenDelegate(int s);
    class Program
    {
        static void Main(string[] args)
        {
            ///create object for class clsOdd_Even
            ///call the method "CheckisOdd" using the object
            ///display the result
            oddOREvenDelegate t = new oddOREvenDelegate(clsOdd_Even.CheckisOdd);

            Console.WriteLine(t(5));
            Console.Read();


        }
    }


    class clsOdd_Even
    {
        
        public static bool CheckisOdd(int s)
        {
            oddOREvenDelegate t = delegate (int s)
              {
                  if x => x % 2 == 0//cannot convert lambda expression to type bool
                    return false;
              };
        }
        
}
    }

3 Ответов

Рейтинг:
8

George Swan

public static void Main (string[] args)
		{
			//define a delegate that takes an int and returns a bool
			Predicate<int> CheckIsOdd=i=>i%2!=0;
			//call the delegate and write the result
			Console.WriteLine(CheckIsOdd(5));
			//An alternative approach using an anonymous function
			PrintBoolValue (5,i => i % 2 != 0);
		}
		public static void PrintBoolValue(int i,Predicate<int> checkBool)
		{
			Console.WriteLine(checkBool(i));
		}


Рейтинг:
28

phil.o

Вы также можете сделать короче:

public static bool CheckisOdd(int s)
{
   return ((s % 2) != 0);
}

или быстрее:
public static bool CheckisOdd(int s)
{
   return ((s & 1) == 1);
}


Рейтинг:
1

________________

Вам не нужно создавать делегат дважды:


public static bool CheckisOdd(int s)
{

	if (s % 2 == 0)
	{
 	     return false;
	}
	else
	{
	      return true;
	}


}