C# 求精简用一行代码完成的多项判断及重复赋值

哈哈,说实话,个人看着这么长的三元操作也麻烦,但是我也只想到了这样三元判断句中执行方法体能够写到一行,追求的终极目的是,用一行实现这个过程,而且简单,由于篇幅,我就不截图我其实是放在一行上的

讨论的重点是怎么做的更极致,而不是这样搞规范不规范,求更有创意的写法。。。

。。 。。华丽丽的分割线。。 。。

var turecolor = colorJToken.OfType<JProperty>().Sum(d => (int)d.Value << "bgra".IndexOf(d.Name) * 8).ToString("X8");

如果是处理颜色,相信 Choo给出的写法想必是极好的,那么如果扩展成普通的用法呢?

。。 。。华丽丽的分割线。。 。。

刚说不实用,先不讨论是不是实用,也不管可读性,单纯的想把代码写在一行上,而且写的少,总结一下,主要内容在这,我想到的写到一行的方法是在三元判断句中执行方法体

bool b = 1 == 1 ? ((Func<bool>)(() => true)).Invoke() : ((Func<bool>)(() => false)).Invoke();

能不能继续精简这样一句话?

鬼柒 在评论中提出了直接纯赋值的写法,嗯,这个在不需要做额外判断的时候好了太多,那么现在的场景是,需要进行判断赋值的话,怎么样写呢?

( Name == "a" ? alph = (Byte)Value : Name == "r" ? red = (Byte)Value : Name == "g" ? green = (Byte)Value : Name == "b" ? blue = (Byte)Value).ToString(0);

。。 。。华丽丽的分割线。。 。。

其中 color仅仅为一个普通的JToken类型,需要精简的是,对于循环重复赋值上,能不能有更简单而且简洁的写法。。。

需求是,用一行完成,且必须有能够执行多判断的地方

Byte red = 0, green = 0, blue = 0, alph = 255;
            JToken colorJToken = CurrentVersion < ColorVersion ? color.FirstOrDefault() : color;
            if (colorJToken != null)
            {
                foreach (var item in colorJToken)
                {
                    var colorJProperty = item as JProperty;
                    if (colorJProperty != null && colorJProperty.Value != null)
                    {
                        //以下求精简
                        (colorJProperty.Name == "a" ? ((Func<bool>)(() => colorJProperty.Value is Byte && (alph = (Byte)colorJProperty.Value).Equals(alph))).Invoke() :
                        (colorJProperty.Name == "r" ? ((Func<bool>)(() => (red = (Byte)colorJProperty.Value).Equals(red))).Invoke() :
                        (colorJProperty.Name == "g" ? ((Func<bool>)(() => (green = (Byte)colorJProperty.Value).Equals(green))).Invoke() :
                        (colorJProperty.Name == "b" ? ((Func<bool>)(() => (blue = (Byte)colorJProperty.Value).Equals(blue))).Invoke() :
                        ((Func<bool>)(() => false)).Invoke())))).ToString();
                    }
                }
            }

查看本栏目更多精彩内容:http://www.bianceng.cnhttp://www.bianceng.cn/Programming/csharp/

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索byte
, name
, value
, invoke
, 一句话判断
, 一行
, 三元
多项内容
c站、c语言、cf、ch、c罗,以便于您获取更多的相关知识。

时间: 2024-10-31 11:48:09

C# 求精简用一行代码完成的多项判断及重复赋值的相关文章

jsp 网站开发-想要做一个网站上的图片下载的链接,有一行代码看不懂,求指导

问题描述 想要做一个网站上的图片下载的链接,有一行代码看不懂,求指导 d3.select(this).attr("href", "data:image/svg+xml;charset=utf-8;base64," + btoa(unescape(encodeURIComponent( svg.attr("version", "1.1") .attr("xmlns", "http://www.w3.

unix-巨难的C,一行代码求解释,详细点,注意这是C,不是C++

问题描述 巨难的C,一行代码求解释,详细点,注意这是C,不是C++ extern "C++" wchar_t *wcschr (wchar_t *__wcs, wchar_t wc) __THROW __asm ("wcschr") __attribute_pure; 解决方案 优化 c c++ 代码 参考点 解决方案二: 第一行,导入一个函数指针,第二行,优化这个函数的执行. 解决方案三: wchar_t *wcschr (wchar_t *__wcs, wcha

线程-在分析图片头文件的时候有一行代码看不懂,望大神指点

问题描述 在分析图片头文件的时候有一行代码看不懂,望大神指点 最近一直在找获取网络图片的size的方式,最后得出两个结论:1 使用分线程下载下来,然后获得图片的size2 使用网络请求图片的头文件,然后从头文件中找到图片大小的信息 第一种方法需要主线程分线程切换,刷表老是出问题,先放着不管重点是想搞一下第二个方法: 在网上找到了一个博客:http://cxjwin.github.io/2013/11/05/preview_image_size/大神写的很不错,也能得出图片大小,但是其中一句代码看

qdebug-急。求大神指导代码 求救啊

问题描述 急.求大神指导代码 求救啊 急!大家帮忙看看,这段代码textDocument为啥只获取txt最后一行数据.我想全都获取该怎么改!求救啊 while (!in.atEnd()) { message =in.readLine(); //qDebug()< textDocument->setHtml(message); // qDebug()< textDocument->print(&printer_text); 解决方案 message =message+'n'+

一个java写的程序,求详细每一行的解释

问题描述 一个java写的程序,求详细每一行的解释 import java.util.Scanner; public class Test{ public static void main(String args[]){ Scanner input = new Scanner(System.in); final int a =50; final int b =10; int c = 0; int d = 2; while(c<a){ boolean e =true ; for(int divis

对象-求 后缀表达式计算器代码及设计思想 本人小白 求大神

问题描述 求 后缀表达式计算器代码及设计思想 本人小白 求大神 后缀表达式计算器 目的:后缀表达式不包含括号,运算符放在两个运算对象的后面,所有的计算按运算符出现的顺序,严格从左向右进行(不再考虑运算符的优先规则, 要求:实现一个简单的后缀表达式计算器.假定表达式里的基本数值为实数,可用的运算符包括+,-,*,/,^,其中的 ^ 表示求幂运算. ①假定输入表达式里的数和运算符之间都有空格,这样可以简化输入的处理: ②输入的算术表达式以分号为结束符.计算器应该能输入并计算一系列表达式,遇到一行的第

new-如何添加一行代码实现转发来电短信?

问题描述 如何添加一行代码实现转发来电短信? 在注释后面添加,求大神!! package com.Shaw.phonelistener; import android.app.Service; import android.content.Context; import android.content.Intent; import android.os.IBinder; import android.provider.Contacts.People.Phones; import android.

Acm题目,求大神给代码

问题描述 Acm题目,求大神给代码 大神帮做一下..Description 在古堡中有N个房间(N<50000),M条道路,每条道路上均有一个守卫,它可以被一个特定编号的武器消灭,每个房间中也存在一种武器,第i个房间中的武器编号为i,道路在守卫消灭之后方可通行,GX一开始在J房间,他想知道哪些房间经过获得武器并打败守卫的过程,是最终可以去的. Input 第一行是N,J,M 接下来M行,每行三个数A,B,C,分别代表A房间和B房间之间有一条路,且此处守卫可以被编号为C的武器消灭.Output 输

求民航售票系统代码用java+jsp代码 SQLserver数据库myeclipse平台

问题描述 求民航售票系统代码用java+jsp代码 SQLserver数据库myeclipse平台 用于课程设计不用太复杂,只用实现基本功能.1.用户登录2.根据时间,出发地,目的地查询机票功能3.订票4.订单查询5.退票.用java+jsp代码 SQLserver数据库myeclipse平台 解决方案 参考:http://download.csdn.net/download/angelyucc/2373156 解决方案二: 这个可以参考,但最好还是自己写吧 解决方案三: http://down