//保留了原文   ()为大概的意思

VB で使用していた IIf 関数の代わりに VB2008 からは If 演算子 を使用可能となった。 また、 C# では、条件演算子 (?:) で同等の記述が可能である。 ここでは、それぞれの使用方法について示す。

(自VB2008开始if运算符代替VB中的IIf函数,相当于C#的(?:)下面就是各自的使用方法举例)

[ C# ] 条件演算子 (?:)

(条件运算符)

[C#]

    int score   = 80;
int average = 60; // 条件が真ならgood、偽ならbadが返される(条件真返回good,条件假返回bad)
object ret = score > average ? "good" : "bad";

以下のように真と偽の場合で異なる型を返すことはできないので注意が必要である。 ただし、全く異なる型を返すことはお勧めできないが、回避することも可能なのでその方法も示す。

(像下面的例子  用对象类型的时候 不能成功的返回值,但是可以有解决的办法)

[C#]

    // 異なる型を返すことはできない(コンパイルエラー)(转换失败)
//object ret = score > average ? new List<string>[1] : new Dictionary<string, string>[2]; // どうしても、異なる型を返したい場合の回避方法(解决办法 定义两个object类型)
object a = new List<string>[1];
object b = new Dictionary<string, string>[2]; object ret = score > average ? a : b;

[ VB ] IIf 関数 (IIF函数)

IIf 関数の使い方はここでは省略するが、参考サイトにあるように以下のコードでは 例外(System.DivideByZeroException)が発生する。(iif的使用方法下面)

[VB]

    Dim number As Integer= 12
Dim divisor As Integer = 0 ' 例外発生
Dim ret As Integer = IIf(divisor <> 0, number \ divisor, 0) iif(表达式,如果成立返回结果1,不成立返回结果2) iif(条件表达式,1,2)

IIf 関数では、条件(divisor <> 0)が真の場合にのみ、真の演算(number \ divisor)を行うのではなく 常に真偽のいずれの演算も行い、条件によってその結果を返しているために上記のコードで例外が発生する。 前述の If 演算子や C# の条件演算子 (?:)では、条件に結果によって真偽いずれかの演算のみ行われるので このような問題は起こらない。


(注意除数为0的错误情况)


[ VB ] If 运算符 [ C# ] 条件运算符 (?:)的更多相关文章

  1. “全栈2019”Java第十九章:关系运算符、条件运算符和三元运算符

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...

  2. [原创]java WEB学习笔记39:EL中的运算符号(算术运算符,关系运算符,逻辑运算符,empty运算符,条件运算符,括号运算符)

    本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...

  3. 030 01 Android 零基础入门 01 Java基础语法 03 Java运算符 10 条件运算符

    030 01 Android 零基础入门 01 Java基础语法 03 Java运算符 10 条件运算符 本文知识点:Java中的条件运算符 条件运算符是Java当中唯一一个三目运算符 什么是三目运算 ...

  4. C语言运算符_03

    ·运算符的优先级:C语言中,运算符的优先级共分为15级.1级最高,15级最低.在表达式中,优先级较高的先于优先级较低的进行运算.而在同一个运算量两侧的运算符优先级相同时,则按运算符的结合性所规定的结合 ...

  5. [Java入门笔记] Java语言基础(三):运算符

    简介 运算符是一种特殊的符号,运算符是通过一定的运算规则操作一个或多个操作数,并生成结果的特定符号,运算符和操作数的有效组合称为表达式. Java中运算符主要分为以下几类: 赋值运算符 算术运算符 关 ...

  6. js 运算符

    一.算术运算符: 1.运算符: “+”:功能:对数字进行代数求和:对字符串进行连接操作:将一个数值转换为字符串(数值+空字符串). “-”:功能:对操作数进行取反操作:对数字进行减法操作:将字符串转换 ...

  7. C 运算符优先级

    优先级 运算符 名称或含义 使用形式 结合方向 说明 1 [] 数组下标 数组名[常量表达式] 左到右   () 圆括号 (表达式)/函数名(形参表)   . 成员选择(对象) 对象.成员名   -& ...

  8. PHP 三元运算符省略写法

    三元运算符 “?:” 又名条件运算符 表达式 (expr1) ? (expr2) : (expr3) 在 expr1 求值为 TRUE 时的值为 expr2,在 expr1 求值为 FALSE 时的值 ...

  9. C#基础知识系列四(运算符汇总)

    前言  本节主要来讲C#中的各种运算符.主要包括is运算符.as运算符.checked和unchecked运算符.sizeof运算符.空接合运算符(??).&和&&.移位运算符 ...

随机推荐

  1. android 面试准备基础题

    1.    请描述下Activity的生命周期. 必调用的三个方法:onCreate() --> onStart() --> onResume(),用AAA表示 )父Activity启动子 ...

  2. 让一个继承unittest.TestCase的类下的setUp和tearDown只执行一次

    知道unittest单元测试框架的朋友应该都知道, 执行继承了unittest.TestCase的类下每个test开头的方法(就是用例)时,都会执行setUp和tearDown,如下面的例子所示: i ...

  3. 2018 ACM 网络选拔赛 沈阳赛区

    B. Call of Accepted #include <cstdio> #include <cstdlib> #include <cmath> #include ...

  4. 对程序进行package封装

    一.package包 格式:package 代码必须写在源代码文件的第一句, 约定俗成使用公司域名的倒写,之后再加其他. for example: package cn.chuanzhiboke.te ...

  5. Docker从入门到飞升:基础配置安装

    导读 Docker近几年非常火,因为它是容器虚拟化,更能够充分提高硬件资源的使用率.其实利用率高不算什么,它最大的优势是能给让运维人员或者开发人员快速部署和交付资源,大大提高了工作效率.几乎所有的大企 ...

  6. 教你如何用Meterpreter渗透Win系统

    在这篇文章中,我们将跟大家介绍如何使用Meterpreter来收集目标Windows系统中的信息,获取用户凭证,创建我们自己的账号,启用远程桌面,进行屏幕截图,以及获取用户键盘记录等等. 相关Payl ...

  7. C#.Net 持久化对象为XML文件

    </pre><pre code_snippet_id="613717" snippet_file_name="blog_20150307_1_57950 ...

  8. Docker mysql主主互备和高可用

    一.测试环境 1.1 结构图 1.2 版本 操作系统:CentOS 7.3 MySQL版本:5.6.35 Docker版本:18.06.1-ce 使用root用户操作 IP地址说明 IP地址 用途 备 ...

  9. Hadoop生态圈-Oozie实战之逻辑调度执行多个Job

    Hadoop生态圈-Oozie实战之逻辑调度执行多个Job 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 1>.启动hadoop集群 [root@yinzhengjie ha ...

  10. FastDFS整合nginx后,nginx一直报错

    FastDFS整合nginx后,nginx一直报错: 报错内容: [2018-06-11 09:41:21] ERROR - file: ../common/fdfs_http_shared.c, l ...