标签: null

对C++中的指针使用NULL或0(零)吗?

在C++的早期,当它被用螺栓固定在C之上时,你不能使用NULL,因为它被定义为(void*)0.你不能将NULL分配给除了之外的任何指针void*,这使得它变得毫无用处.在那些日子里,人们接受了你使用0(零)空指针.

直到今天,我继续使用零作为空指针,但我周围的人坚持使用NULL.我个人认为给NULL现有值一个name()没有任何好处- 因为我也喜欢将指针测试为真值:

if (p && !q)
  do_something();
Run Code Online (Sandbox Code Playgroud)

然后使用零更有意义(如果你使用NULL,你不能逻辑使用p && !q- 你需要明确比较NULL,除非你假设NULL是零,在这种情况下为什么使用NULL).

有没有客观的理由偏好零而不是NULL(反之亦然),或者只是个人偏好?

编辑:我应该添加(并且最初要说)使用RAII和异常,我很少使用零/ NULL指针,但有时你确实需要它们.

c++ null

186
推荐指数
13
解决办法
13万
查看次数

在.NET中使用后将对象设置为Null/Nothing

完成后,是否应该将所有对象设置为null(Nothing在VB.NET中)?

我理解在.NET中必须处理实现IDisposable接口的任何对象实例以释放一些资源,尽管对象在处理之后仍然可以是某种东西(因此isDisposed表单中的属性),所以我认为它仍然可以驻留在记忆中还是至少部分?

我也知道当一个对象超出范围时,它会被标记为收集准备好下一次垃圾收集器的传递(虽然这可能需要时间).

因此,考虑到这一点,将其设置为null加速系统释放内存,因为它不必解决它不再在范围内并且它们是否有任何不良副作用?

MSDN文章从未在示例中执行此操作,目前我这样做是因为我无法看到它的危害.但是我遇到了各种意见,所以任何评论都是有用的.

.net c# vb.net null memory-management

184
推荐指数
8
解决办法
9万
查看次数

getActivity()在Fragment函数中返回null

我有一个像这样的公共方法的片段(F1)

public void asd() {
    if (getActivity() == null) {
        Log.d("yes","it is null");
    }
}
Run Code Online (Sandbox Code Playgroud)

是的,当我调用它(来自Activity)时,它是null ...

FragmentTransaction transaction1 = getSupportFragmentManager().beginTransaction();
F1 f1 = new F1();
transaction1.replace(R.id.upperPart, f1);
transaction1.commit();
f1.asd();
Run Code Online (Sandbox Code Playgroud)

它一定是我做错了,但我不知道那是什么

null android android-context android-fragments android-activity

182
推荐指数
7
解决办法
15万
查看次数

Objective-C中的NULL与nil

observeValueForKeyPath:ofObject:change:context:- 为什么文档使用NULL而不是nil在不指定上下文指针时?

null cocoa objective-c

180
推荐指数
4
解决办法
9万
查看次数

更清洁的方法在C#中进行空检查?

假设,我有这个界面,

interface IContact
{
    IAddress address { get; set; }
}

interface IAddress
{
    string city { get; set; }
}

class Person : IPerson
{
    public IContact contact { get; set; }
}

class test
{
    private test()
    {
        var person = new Person();
        if (person.contact.address.city != null)
        {
            //this will never work if contact is itself null?
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

Person.Contact.Address.City != null (这可以检查City是否为空.)

但是,如果Address或Contact或Person本身为null,则此检查将失败.

目前,我能想到的一个解决方案是:

if (Person != null && Person.Contact!=null && Person.Contact.Address!= null && Person.Contact.Address.City != …
Run Code Online (Sandbox Code Playgroud)

c# null .net-4.0 .net-4.5

180
推荐指数
9
解决办法
8万
查看次数

NULL vs nullptr(为什么它被替换?)

我知道在C++中0x或者NULLnullptr基于指针的应用程序所取代.我只是好奇他们为什么要更换它?

在处理指针时,在什么情况下使用nullptr过度NULL有益?

c++ null pointers nullptr

176
推荐指数
4
解决办法
14万
查看次数

如何将枚举设置为null

我有一个枚举

string name;

public enum Color
{
  Red,
  Green,
  Yellow
}
Run Code Online (Sandbox Code Playgroud)

如何在加载时将其设置为NULL.

name = "";
Color color = null; //error
Run Code Online (Sandbox Code Playgroud)

编辑:我的不好,我没有正确解释.但所有与可空的相关的答案都是完美的.我的情况是如果,我已经在类中使用其他元素(例如名称等)获取/设置枚举.在页面加载时,我初始化类并尝试将值默认为null.这是场景(代码在C#中):

namespace Testing
{
    public enum ValidColors
    {
        Red,
        Green,
        Yellow
    }

    public class EnumTest
    {
        private string name;
        private ValidColors myColor;

        public string Name
        {
            get { return name; }
            set { name = value; }
        }

        public ValidColors MyColor
        {
            get { return myColor; }
            set { myColor = value; }
        }

    }

    public partial class _Default : …
Run Code Online (Sandbox Code Playgroud)

c# null enums nullable

172
推荐指数
5
解决办法
20万
查看次数

如何检查我的字符串是否等于null?

我想只在我的字符串有一个有意义的值时执行一些操作.所以,我试过这个.

if (!myString.equals("")) {
doSomething
}
Run Code Online (Sandbox Code Playgroud)

还有这个

if (!myString.equals(null)) {
doSomething
}
Run Code Online (Sandbox Code Playgroud)

还有这个

if ( (!myString.equals("")) && (!myString.equals(null))) {
doSomething
}
Run Code Online (Sandbox Code Playgroud)

还有这个

if ( (!myString.equals("")) && (myString!=null)) {
doSomething
}
Run Code Online (Sandbox Code Playgroud)

还有这个

if ( myString.length()>0) {
doSomething
}
Run Code Online (Sandbox Code Playgroud)

在所有情况下,我的程序doSomething尽管我的字符串是空的.它等于null.那么,那有什么问题?

添加:

我找到了问题的原因.该变量被声明为一个字符串,因此,null分配给该变量的变换为"null"!所以,if (!myString.equals("null"))有效.

java string null equals conditional-operator

166
推荐指数
11
解决办法
47万
查看次数

如何在jQuery中检查null对象

我正在使用jQuery,我想检查页面中是否存在元素.我写了下面的代码,但它不起作用:

if($("#btext" + i) != null) {
    //alert($("#btext" + i).text());
    $("#btext" + i).text("Branch " + i);
}
Run Code Online (Sandbox Code Playgroud)

如何检查元素的存在?

javascript null jquery dom object

165
推荐指数
7
解决办法
37万
查看次数

什么时候我应该在Objective-C中使用nil和NULL?

这是示例代码:

NSDictionary *myDictionary = [NSDictionary dictionary];
NSNumber *myNumber = [myDictionary valueForKey: @"MyNumber"];
NSLog(@"myNumber = %@", myNumber); // output myNumber = (null)

if (myNumber == nil)
    NSLog(@"test 1 myNumber == nil");

if (myNumber == NULL)
    NSLog(@"test 2 myNumber == NULL");

if ([myNumber isEqual:[NSNull null]])
    NSLog(@"test 3 myNumber == [NSNull null]");
Run Code Online (Sandbox Code Playgroud)

我什么时候应该使用nil,NULL和[NSNull null]?

null objective-c nsnull

165
推荐指数
9
解决办法
11万
查看次数