如果变量中的值为null,是否可以测试变量是否定义为字符串?
如果我写:
string b = null;
bool c = b is string;
然后c将为false,因为 is 查看内容,该内容为null,而不是字符串。
如果我写:
string b = null;
bool c = (b.GetType() == typeof(string));
然后它就崩溃了,因为s是空的,所以不能对空值调用GetType()。
那么,我如何检查b来确定它是哪种类型呢?可能是某种反射?还是有更简单的方法?
编辑1:问题的澄清!
我的问题有点不清楚,这是我的错。在这个例子中,我似乎是在尝试测试变量
让我们假设我用C#编写了公共API:
public void Method(object param)
{
if(param == null)
{
throw new ArgumentNullException("Specified 'param' can not be null");
}
// ... other business logic
}
我想知道,如果我有不为空的参数(对象),是否可以保证不需要检查参数是否为空的值?()作为方法参数?换句话说,上面的示例是否检查空冗余?
我有一个PHP脚本,它从文件fileRead2.php调用函数fileRead2函数。
下面的函数读取username.txt (显示用户名)。
vim fileRead2.php
<?php
function fileRead2() {
global $fh, $line;
$fh = fopen('username.txt','r');
while ($line = fgets($fh)) {
// <... Do your work with the line ...>
ec
我知道我可以用-z测试一个字符串是否为空,也可以用-n测试一个字符串是否为非空。所以我用ubuntu 10.10写了一个脚本:
#!/bin/bash
A=
test -z $A && echo "A is empty"
test -n $A && echo "A is non empty"
test $A && echo "A is non empty"
str=""
test -z $str && echo "str is empty"
tes
我正在尝试使用Fortran2018学习gfortran。在玩指针时,我注意到似乎没有一个工具可以测试空指针。所以我有两个问题:
真的没有(直截了当的)方法来测试一个指针是空指针还是在Fortran中“准备使用”?如果没有,为什么在Fortran中没有必要使用?
更实际地说,在下面的代码片段中:如果分配给p是否“安全”,我们如何在执行过程中的任何一点上找到答案?(可能是想象一个更复杂的allocate、nullify和deallocate语句序列。)
program test
implicit none
real, pointer :: p
! p = 3
我有一个函数,接收变量x并检查它是否为“零”或“空”。
使用类型提示语法,我会使用什么类型提示?
通过提供自定义的或__len__方法(因此bool(object)的结果可以是False),除了检查它是否实际实现了__bool__或__len__方法之外,我如何检查它是否显式地“False”呢?
示例:
def my_func(x: "what goes here?"):
assert boolable(x) # what to do in this line?
if x:
"some logic"
else:
为何:
string s = "";
bool sCanBeNull = (s is Nullable);
s = null;
sCanBeNull等同于假?
我正在编写一个代码生成器,需要确保传递给它的每个类型都是可空的,如果它还不是。
//Get the underlying type:
var type = field.FieldValueType;
//Now make sure type is nullable:
if (type.IsValueType)
{
这个问题有两个部分
1)这种对发生的事情的理解是正确的吗?
"if (obj)“正在测试指针是否不是0x0,也就是设置为整数内存地址
"if (obj != nil)“将对象的内存地址与通用nil对象的内存地址进行比较
2)所以在我不知道一个变量是否指向任何东西的情况下,如果它指向了什么,我也不知道那个对象是一个有效的对象还是nil。我想基于这些信息做很多事情,而不仅仅是传递一条消息给obj,我意识到如果它是空的,这将是安全的。这段代码既正确又必要吗?
if (obj && obj != nil) {
// Do a bunch of things th