2015-02-18 2 views
-4

Итак, я обыскал объявление бесконечно, и я только больше смущен. У меня есть приложение C# MVC, в котором у меня есть класс «Доход». У меня есть ввод ниже того, что я пытаюсь выполнить, но просто не могу понять.Возвращаемое значение bool, основанное на выборе перечисления

public enum PayType 
{ 
    Hourly, Salary, Commission 
} 

public class Income 
{ 
    public PayType PayType {get; set;} 
    public bool IsOvertimeEligible 
     { get 
      { if(PayType.Hourly) 
       { 
         return true; 
       } 
      return false; 
      } 
     } 
} 

Я пробовал «typeof» и несколько других вещей, но, похоже, не мог сдвинуться с нуля.

Любая помощь будет высоко оценено

+0

_ "не может отъезжать нуль" _ что это значит? Где вы пробовали что? –

+0

Возможно, вы запутались, потому что ваше свойство типа 'PayType' также называется' PayType'. Вы хотите сравнить * значение * свойства 'PayType' с значением перечисления' PayType.Hourly'. Также. всякий раз, когда вы возвращаете 'true' или' false' из 'if', вы можете просто вернуть выражение (потому что само выражение имеет тип' bool' и оценивается как 'true' или' false'). – Groo

+0

Пожалуйста, укажите ошибку и строку, где это происходит в следующий раз, когда вы задаете вопрос о stackoverflow. –

ответ

4

PayType.Hourly является членом enumPayType, тогда как this.PayType (this. не является обязательным, но включены для ясности) является членом classIncome. Ни одно из них не может использоваться как условие оператора if, но сравнение равенства (==) из двух результатов в bool так может. Поэтому изменить

if(PayType.Hourly) 

в

if (this.PayType == PayType.Hourly) 

сделать эту компиляцию.


Вы можете упростить вызов ПОЛУЧИТЬ, избавившись от лишнего if даного

public bool IsOvertimeEligible 
{ 
    get { return this.PayType == PayType.Hourly; } 
} 

т.е.

if (condition) 
    return true; 
else 
    return false; 

может быть просто

return condition; 
+0

Работал отлично. Благодаря! –

+0

@BartDaley Приятно слышать! Пожалуйста, используйте кнопку галочки рядом с ответом, чтобы указать как таковой (вы также получаете 2+ репутации для этого)! –

1

Попробуйте это:

if(PayType == PayType.Hourly) 
2

Это:

public bool IsOvertimeEligible 
{ 
    get 
    { 
     return this.PayType == PayType.Hourly; 
    } 
} 
Смежные вопросы