Nano Hash - криптовалюты, майнинг, программирование

Присвоение значений переменным из элементов управления, где «пусто», должен быть лучший способ!

У меня есть приложение winform для домашнего использования, где ниже очень распространено.

            Int32? afhAgreement = null;
            if (!lkuReveiewAFHAgreement.Text.Equals(string.Empty))
            {
                afhAgreement = (Int32)lkuReveiewAFHAgreement.EditValue;
            }
            DateTime? afhAgreementDate = null;
            if (datAFHAgreementCompleted.Text != String.Empty)
            {
                afhAgreementDate = (DateTime?)datAFHAgreementCompleted.EditValue;
            }
            Int32? crisisPlan = null;
            if (!lkuReview6MonthCrisisPlan.Text.Equals(string.Empty))
            {
                crisisPlan = (Int32)lkuReview6MonthCrisisPlan.EditValue;
            }
            DateTime? crisisPlanDate = null;
            if (dat6MonthCrisisPlanReviewed.Text != String.Empty)
            {
                crisisPlanDate = (DateTime?)dat6MonthCrisisPlanReviewed.EditValue;
            }
            Int32? riskAgreement = null;
            if (!lkuReviewRiskAssessment.Text.Equals(string.Empty))
            {
                riskAgreement = (Int32)lkuReviewRiskAssessment.EditValue;
            }
            DateTime? riskAgreementDate = null;
            if (!datRiskAssessmentReviewed.Text.Equals(string.Empty))
            {
                riskAgreementDate = (DateTime?)datRiskAssessmentReviewed.EditValue;
            }

Учитывая, что все эти переменные могут быть NULL, кажется, что это нелепый способ сделать это. Разве нет Convert this object and Default to NULL?

Кстати, EditValue - это объект, хотя я считаю, что у меня такая же проблема, даже если я использую свойство Text элемента управления.

Итак, есть ли лучший способ? Могу ли я упростить это с помощью Extension Methods?


Ответы:


1

Просто добавьте несколько повторно используемых функций... например:

static T? GetValue<T>(YourControlType control) where T : struct
{
    if (string.IsNullOrEmpty(control.Text)) return null;
    return (T)control.EditValue;
}

А потом (например):

DateTime? crisisPlanDate = GetValue<DateTime>(dat6MonthCrisisPlanReviewed);

(где YourControlType — это любой элемент управления, который вы используете с string .Text и object .EditValue)

18.02.2010
  • Итак, я бы создал функцию, подобную этой, для КАЖДОГО типа управления, верно? DateTime, LookUp и т. д. 18.02.2010
  • Если у вас есть один тип управления, то в этом нет необходимости, но это не ясно из вопроса. 18.02.2010
  • Прости за это! Да, у меня есть несколько типов управления. В вопросе lku будет относиться к раскрывающемуся списку LookUp, а dat относится к окну DateEdit. Есть и другие. Я просто пытался сделать вопрос достаточно простым, чтобы люди могли ответить. 18.02.2010

  • 2

    что-то вроде этого..

    afhAgreement = (!lkuReveiewAFHAgreement.Text.Equals(string.Empty)) ? (Int32)lkuReveiewAFHAgreement.EditValue : null;
    
    riskAgreement = (!lkuReviewRiskAssessment.Text.Equals(string.Empty))  ? (Int32)lkuReviewRiskAssessment.EditValue : null;
    
    18.02.2010
    Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..