C# 定义时类型bool? 什么时候要用到?可为空?

时间:2021-01-07 16:02:46
如题。

刚知道有类型名为“类型+?”,意为类型范围加上“可为空”这个范围。

可否举个例子,为啥时候,才设计为bool?类型的。

MSDN,只是说了bool?安全转为bool的,小弟项目经验不足,不知道啥时候要设计该值。

如何:从 bool? 安全地强制转换为 bool(C# 编程指南)
可空类型(C# 编程指南)

带着好奇问问。

17 个解决方案

#1


不知道为啥子俺就从来没用过! C# 定义时类型bool? 什么时候要用到?可为空?

#2


bool? tag
估计可以为空了,呵呵

#3


这个要根据情况自己选用

就像 int,谁能具体规定一下啥时候应该用int了

至于转换到简单

 bool res;
 bool a=res??false

 bool b= res.GetValueOrDefault()

#4


引用 3 楼 wanghui0380 的回复:
这个要根据情况自己选用

就像 int,谁能具体规定一下啥时候应该用int了

至于转换到简单

bool res;
bool a=res??false

bool b= res.GetValueOrDefault()


恩,刚刚在在MSDN看了一下??运算符的使用。

虽然知道用法。

但能看到这使用上的,还真不明白为啥要这样设计。
因为能用上这种情况的真的很少。

哈哈……我只是好奇。


#5


我一般在以下情况用的比较多
比如

struct book
{
 public string bookname;
 public int bookid;
}
book? GetBook(int id)
{
  book? b = null;
  if ( 数据库有记录 )
  {
     b = new book {  bookname ="123" , bookid=1 };
  }
  return b;
}

void main()
{
  book? b = GetBook(1);
  if ( b==null )
       没有记录
  else
      string bookname = ((book)b).bookname;
}

#6


bool? b= null;
b则可以处理true、false和null值
可空类型Nullable 
接合运算符?? 
int? x = null; 
int y = x ?? -1; // X is null y为-1 
相当于 int y = x.HasValue ? x.GetValueOrDefault() : -1 

#7


Nullable可能源于三进制状态表达的考虑。

#8


该回复于2011-07-12 00:06:45被版主删除

#9


比如你的网站有个性别字段,但用户可以不填,就可以用null表示未填的,true表示“男”,false表示“女”。

#10


引用 9 楼 snowdust 的回复:
比如你的网站有个性别字段,但用户可以不填,就可以用null表示未填的,true表示“男”,false表示“女”。


就是。

#11


bool类型 你可以简单的理解为开关啊

#12


学习学习  !!!!

#13


引用 9 楼 snowdust 的回复:
比如你的网站有个性别字段,但用户可以不填,就可以用null表示未填的,true表示“男”,false表示“女”。


恩,这个不错!!!!!!!

#14


引用 9 楼 snowdust 的回复:
比如你的网站有个性别字段,但用户可以不填,就可以用null表示未填的,true表示“男”,false表示“女”。

你会被春哥、曾哥、小沈阳追杀

#15


这还是我第一次听说啊 直面面对火星文了

#16


引用 14 楼 alifriend 的回复:
引用 9 楼 snowdust 的回复:
比如你的网站有个性别字段,但用户可以不填,就可以用null表示未填的,true表示“男”,false表示“女”。
 你会被春哥、曾哥、小沈阳追杀

追杀我也要用啊
谁让这世界还有第三种性别呢

#17


这可能是过分技术化的恶果。

null用我们自然的语言就是说“不知道、不确定、不关心”。只要我们用自然的语言来读我们的对象结构,我们就知道有没有必要将属性或者字段表达为可为null的了(免得那种用-1来表达“不知道年龄”的过时写法)。

听说编程的人也开始讲《道法自然》了,什么时候真的自然呢?不能分析时说一套而编写代码时出来的代码是另一套吧。

#1


不知道为啥子俺就从来没用过! C# 定义时类型bool? 什么时候要用到?可为空?

#2


bool? tag
估计可以为空了,呵呵

#3


这个要根据情况自己选用

就像 int,谁能具体规定一下啥时候应该用int了

至于转换到简单

 bool res;
 bool a=res??false

 bool b= res.GetValueOrDefault()

#4


引用 3 楼 wanghui0380 的回复:
这个要根据情况自己选用

就像 int,谁能具体规定一下啥时候应该用int了

至于转换到简单

bool res;
bool a=res??false

bool b= res.GetValueOrDefault()


恩,刚刚在在MSDN看了一下??运算符的使用。

虽然知道用法。

但能看到这使用上的,还真不明白为啥要这样设计。
因为能用上这种情况的真的很少。

哈哈……我只是好奇。


#5


我一般在以下情况用的比较多
比如

struct book
{
 public string bookname;
 public int bookid;
}
book? GetBook(int id)
{
  book? b = null;
  if ( 数据库有记录 )
  {
     b = new book {  bookname ="123" , bookid=1 };
  }
  return b;
}

void main()
{
  book? b = GetBook(1);
  if ( b==null )
       没有记录
  else
      string bookname = ((book)b).bookname;
}

#6


bool? b= null;
b则可以处理true、false和null值
可空类型Nullable 
接合运算符?? 
int? x = null; 
int y = x ?? -1; // X is null y为-1 
相当于 int y = x.HasValue ? x.GetValueOrDefault() : -1 

#7


Nullable可能源于三进制状态表达的考虑。

#8


该回复于2011-07-12 00:06:45被版主删除

#9


比如你的网站有个性别字段,但用户可以不填,就可以用null表示未填的,true表示“男”,false表示“女”。

#10


引用 9 楼 snowdust 的回复:
比如你的网站有个性别字段,但用户可以不填,就可以用null表示未填的,true表示“男”,false表示“女”。


就是。

#11


bool类型 你可以简单的理解为开关啊

#12


学习学习  !!!!

#13


引用 9 楼 snowdust 的回复:
比如你的网站有个性别字段,但用户可以不填,就可以用null表示未填的,true表示“男”,false表示“女”。


恩,这个不错!!!!!!!

#14


引用 9 楼 snowdust 的回复:
比如你的网站有个性别字段,但用户可以不填,就可以用null表示未填的,true表示“男”,false表示“女”。

你会被春哥、曾哥、小沈阳追杀

#15


这还是我第一次听说啊 直面面对火星文了

#16


引用 14 楼 alifriend 的回复:
引用 9 楼 snowdust 的回复:
比如你的网站有个性别字段,但用户可以不填,就可以用null表示未填的,true表示“男”,false表示“女”。
 你会被春哥、曾哥、小沈阳追杀

追杀我也要用啊
谁让这世界还有第三种性别呢

#17


这可能是过分技术化的恶果。

null用我们自然的语言就是说“不知道、不确定、不关心”。只要我们用自然的语言来读我们的对象结构,我们就知道有没有必要将属性或者字段表达为可为null的了(免得那种用-1来表达“不知道年龄”的过时写法)。

听说编程的人也开始讲《道法自然》了,什么时候真的自然呢?不能分析时说一套而编写代码时出来的代码是另一套吧。