C# 中如何判断变量是否被赋值

String,DateTime,Guid等看似值类型,但其实它们都是的继承自Object的类,未赋值前可判断为null举个例子:stringstr;if(str==nul... String, DateTime, Guid 等看似值类型,但其实它们都是的继承自 Object 的类,未赋值前可判断为 null

举个例子:
string str;
if (str == null) Console.Write('变量没有赋值');

但 Int32, Boolean 等类型的,未赋值前如何判断其是否有值?

我现在用 int? 使其可以拥有 null,但其类型实际上是 Nullable<int>,显然不是最好的解决方案。

例子:
int? i;
if (i == null) Console.Write('变量没有赋值');

以下是希望各位大虾指教我如何构想例子,例子当然是错的,只是通过它希望能表达我想表达的意思:
int i;
if (i == ???) Console.Write('变量没有赋值'); //这个判断语句该如何写?如何判断 i 并没有被赋值?
展开
 我来答
百度网友d242235
2009-09-03 · TA获得超过2385个赞
知道大有可为答主
回答量:1403
采纳率:84%
帮助的人:820万
展开全部
string确实是引用类型,因此若只声明而不赋值,它是不能为外界引用的,原因就在于类未被实例化为对象。
而int、boolean等是值类型,如果未被赋值,就不能被使用,如果直接使用,那C#编译器是会报错的。除非你把int、boolean作为某个类的成员变量,如果只声明却不赋值,那么在类实例化时,编译器会把这些值类型的成员自动变量赋一个初始值,例如int赋为0,boolean赋为false,这样可以直接在类中或外部被调用。
如果这些值类型只是类中某个方法中的局部变量(即值类型在方法体中声明).那么编译器就会报错,这时反而不需要检测数据了,因为程序根本无法通过。
可能高手还有更好的判断方法吧,关注之……
优游自如
2009-09-03 · TA获得超过1012个赞
知道小有建树答主
回答量:233
采纳率:0%
帮助的人:185万
展开全部
值类型一般都有初始值 比如说Int32的初始值为0 boolean的初始值为false

但如果以初始值来判定一个值类型是否被赋值显然是不好的,因为0也是一个有效的Int32类型,false也是一个有效的boolean类型

所以说只有用int? double?这种让值类型可为null的方法来判断是否赋值,而boolean不适合这种判断 因为它只有两个值

也可以把一个Int32类型赋初始值为int.MinValue 判断的时候用if(i == int.MinValue)来进行判断
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
kid83
推荐于2018-05-09 · TA获得超过2081个赞
知道大有可为答主
回答量:1818
采纳率:0%
帮助的人:1995万
展开全部
我是这样的,给这些值类型加一个默认值.这种默认值一般情况下达不到.
int i = int.MinValue;
这样,只要是i == int.MinValue,我就认为是默认值.同理,decimal,double,DateTime都有MinValue,Guid.Empty
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
yp227
2009-09-03 · TA获得超过538个赞
知道小有建树答主
回答量:226
采纳率:100%
帮助的人:95.8万
展开全部
为什么要判断它有没有被赋值呢?
如果只是使用这个变量的值的话,那么判断有没有被赋值过是没有意义的。

是想看这个变量有没有被更改过么?
如果是的话那么应该设置一个标志位,比如bool XXXIsChanged。
当这个变量被更改的时候,就把XXXIsChanged 设为true。

当然,判断的方法有很多,其实我想说的是:
达到目的的路有很多条,但有些是不易读的,也就是不好的代码风格。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zfy0921
2009-09-03 · 超过56用户采纳过TA的回答
知道小有建树答主
回答量:320
采纳率:0%
帮助的人:139万
展开全部
int i;可以写成全局类型
如果没赋值的话,它会默认i=0
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(10)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式