标签: nullreferenceexception

.NET 3.0或更高版本中是否修复了IsNullOrEmpty错误?

有谁知道IsNullOrEmpty错误是否在3.0或更高版本中得到修复?我目前遇到2.0中的(NullReferenceException)错误,我发现文档说明应该在下一个版本中修复,但没有明确的答案.

c# clr jit nullreferenceexception

3
推荐指数
1
解决办法
617
查看次数

访问可能存在或不存在的子元素时,避免使用对象空引用异常

我有:带有一些元素的XML.可以在此XML中定义的子元素,也可以不在此XML中定义.需要在子元素存在时提取子元素的值.

如何在不抛出对象引用错误的情况下获取值?

例如:

 string sampleXML = "<Root><Tag1>tag1value</Tag1></Root>"; 

//Pass in <Tag2> and the code works: 
//string sampleXML = "<Root><Tag1>tag1value</Tag1><Tag2>tag2Value</Tag2></Root>";    
 XDocument sampleDoc = XDocument.Parse(sampleXML);

//Below code is in another method, the 'sampleDoc' is passed in. I am hoping to change only this code
XElement sampleEl = sampleDoc.Root; 
string tag1 = String.IsNullOrEmpty(sampleEl.Element("Tag1").Value) ? "" : sampleEl.Element("Tag1").Value;

//NullReferenceException:
//Object reference not set to an instance of an object.
string tag2 = String.IsNullOrEmpty(sampleEl.Element("Tag2").Value) ? "" : sampleEl.Element("Tag2").Value;
Run Code Online (Sandbox Code Playgroud)

.net c# exception-handling linq-to-xml nullreferenceexception

3
推荐指数
1
解决办法
9007
查看次数

条件空检查的NullReferenceException?

我正在尝试修复一个我无法重现的错误(yipeee!).我有最初发现问题的用户复制的堆栈跟踪,它显示了在检查对象为null的行上抛出空引用异常(未处理)的代码.如下所示:

private void someFunction()
{
    radioButton1.CheckedChanged -= checkedChangedEventHandler
    radioButton2.CheckedChanged -= checkedChangedEventHandler

    if (someObject != null)  // throws NullReferenceException...allegedly
    {
         if (someObject.Property == something)
         {
            // set properties on some UI components
         }
    }
}
Run Code Online (Sandbox Code Playgroud)

什么样的条件会导致这种情况?

UPDATE

添加了一些代码.SomeCunction方法由checkedChanged事件处理程序调用.

更新2

堆栈跟踪必须是错误的,因为你们有几个人建议.没有运算符重载,并且该方法仅引用四个非UI组件的对象(标签和单选按钮),并且所有这些对象在初始化时仅分配一次,并且在获取此代码之前被多次引用,因此任何在此之前,空引用会被捕获.我将不得不更仔细地查看调用事件处理函数.

这是一个解释具有错误行号的堆栈跟踪的线程:

堆栈跟踪上的行号错误

.net c# nullreferenceexception

3
推荐指数
1
解决办法
1209
查看次数

为什么我得到这个NullReferenceException C#

我一直在使用一些代码来处理通过Active目录查询来管理连接用户和设备的应用程序.

然后我得到这个错误"NullReferenceException未处理"大约一个星期,使用代码这是唯一阻止应用程序的东西.

这是我使用的背景代码:

private void backgroundWorker2_Dowork(object sender, DoWorkEventArgs e)
{
    try
    {
        e.Result = "";

        int val = 6000;

        for (int a = 1; a <= val; a++)
        {
            counter.Text = Convert.ToString(a);
            if (txtWorkGroupName.Text == "") return;

            DataTable dt = new DataTable();
            dt.Clear();

            dt.Columns.Add(new DataColumn("ComputerName", typeof(String)));                        //0
            dt.Columns.Add(new DataColumn("IP", typeof(String)));            //1
            dt.Columns.Add(new DataColumn("MAC", typeof(String)));       //2
            dt.Columns.Add(new DataColumn("Descubierto", typeof(String)));       //3
            //int i = 0;

            try
            {
                // Datos del grupo WinNT://&&&&(Nombre del grupo de trabajo)
                DirectoryEntry DomainEntry = new DirectoryEntry("WinNT://" + …
Run Code Online (Sandbox Code Playgroud)

c# error-handling datagridview nullreferenceexception

3
推荐指数
1
解决办法
3236
查看次数

为什么以下C#代码在可空的DateTime初始化时抛出NullReferenceException?

这是一些简单的代码:

    static void Main(string[] args)
    {
        var coll = new List<string> {"test", "test2", "test3"};

        var filteredColl = coll.Select(x => x).ToList();

        if (!filteredColl.Any())
        {
            DateTime? date = new DateTime();

            filteredColl = coll.Where(x => date.GetValueOrDefault().Date.ToString(CultureInfo.InvariantCulture) == x).Select(x => x).ToList();
        }
    }
Run Code Online (Sandbox Code Playgroud)

问题是,为什么以下步骤使其与NullReferenceException崩溃:

1)断点到if

断点

2)设置下一个执行点:

执行点

3)尝试继续使用F10:

例外

如果我注释掉代码的最后一行,它就不会崩溃.

更新:这是堆栈跟踪:

System.NullReferenceException was unhandled   HResult=-2147467261  
Message=Object reference not set to an instance of an object.  
Source=ConsoleApplication28   StackTrace:
       at ConsoleApplication28.Program.Main(String[] args) in Program.cs: line 21
       at System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args)
       at System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, …
Run Code Online (Sandbox Code Playgroud)

c# nullable nullreferenceexception

3
推荐指数
1
解决办法
2542
查看次数

尝试在ActionbarActivity的Fragment中为SharedPreferences的空对象引用调用虚方法

我的应用需要在后台访问共享首选项文件.自从我开始使用v21支持库的actionbaractivity来保存我的片段后,我的app力就关闭了.每当片段离开屏幕时强制关闭,但异步任务仍在运行并尝试访问该sharedpreferences文件.为什么要抛出这个错误,我该如何解决?

这是堆栈跟踪:

12-22 23:49:49.469: E/AndroidRuntime(23016): FATAL EXCEPTION: AsyncTask #4
12-22 23:49:49.469: E/AndroidRuntime(23016): Process: com.bernard.beaconportal.activities, PID: 23016
12-22 23:49:49.469: E/AndroidRuntime(23016): java.lang.RuntimeException: An error occured while executing doInBackground()
12-22 23:49:49.469: E/AndroidRuntime(23016):    at android.os.AsyncTask$3.done(AsyncTask.java:300)
12-22 23:49:49.469: E/AndroidRuntime(23016):    at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:355)
12-22 23:49:49.469: E/AndroidRuntime(23016):    at java.util.concurrent.FutureTask.setException(FutureTask.java:222)
12-22 23:49:49.469: E/AndroidRuntime(23016):    at java.util.concurrent.FutureTask.run(FutureTask.java:242)
12-22 23:49:49.469: E/AndroidRuntime(23016):    at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
12-22 23:49:49.469: E/AndroidRuntime(23016):    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
12-22 23:49:49.469: E/AndroidRuntime(23016):    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
12-22 23:49:49.469: E/AndroidRuntime(23016):    at java.lang.Thread.run(Thread.java:818)
12-22 23:49:49.469: E/AndroidRuntime(23016): Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.SharedPreferences android.support.v4.app.FragmentActivity.getSharedPreferences(java.lang.String, int)' …
Run Code Online (Sandbox Code Playgroud)

android nullreferenceexception sharedpreferences android-support-library android-actionbaractivity

3
推荐指数
2
解决办法
3万
查看次数

Xamarin自定义UITableViewCell抛出System NullReferenceException

我正在为iOS创建一个Xamarin应用程序,我已经在故事板中添加了一个UITableViewCell,以赋予它我自己的风格.我确实为这个自定义UITableViewCell添加了一个类,即MainMenuCell.我向单元格添加了两个标签,并将它们与MainMenuCell.h文件连接起来,产生以下代码:

MainMenuCell.cs

using System;
using Foundation;
using UIKit;

namespace MyProjectNamespace
{
    public partial class MainMenuCell : UITableViewCell
    {
        public MainMenuCell (IntPtr handle) : base (handle)
        {
        }

        public MainMenuCell () : base ()
        {
        }

        public void SetCellData()
        {
            projectNameLabel.Text = "Project name";
            projectDateLabel.Text = "Project date";
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

MainMenuCell.h(自动生成):

using Foundation;
using System.CodeDom.Compiler;

namespace MyProjectNamespace
{
[Register ("MainMenuCell")]
partial class MainMenuCell
{
    [Outlet]
    UIKit.UILabel projectDateLabel { get; set; }

    [Outlet]
    UIKit.UILabel projectNameLabel { get; set; }

    void ReleaseDesignerOutlets …
Run Code Online (Sandbox Code Playgroud)

c# uitableview nullreferenceexception xamarin.ios xamarin

3
推荐指数
1
解决办法
1785
查看次数

Null条件运算符为事件抛出空引用

据我所知,null条件运算符(?.)在运行下一位代码之前检查null,但在此代码中:

public delegate void EventArgs(object Sender, PlayerPage Page);
public event EventArgs PageChanged;
private PlayerPage _CurrentPage = PlayerPage.NoPage;
public PlayerPage CurrentPage
{
    get { return _CurrentPage; }
    set { _CurrentPage = value; PropertyChangedFire(); this?.PageChanged(this,value); }
}
Run Code Online (Sandbox Code Playgroud)

但是这个?.PageChanged(this,value); 抛出空引用异常

编辑:

哦......我多么愚蠢:)改为PageChanged?.Invoke(); 感谢您及时的回复

c# nullreferenceexception

3
推荐指数
1
解决办法
201
查看次数

无法理解为什么我得到NullReferenceException

我有一个代码块,它从队列中读取,处理一个项目(在自己的线程中),然后重复直到队列为空.

public ActionResult GetOrdersAsync() {

        int count = 0;
        SyncDM sync = _common.StartSync();

        while (sync != null && sync.SyncId != 0) {

            int customerId;
            bool result = int.TryParse(sync.Payload, out customerId);
            if (result) {
                Task.Run(() => GetOrders(sync.SyncId, customerId));
            }

            count++;
            //Process the next Sync
            sync = _common.StartSync();

        }

        return Json(new JsonModel {
            Message = "Started " + count + " instances of GetOrders",
            Success = count > 0
        });

    }
Run Code Online (Sandbox Code Playgroud)

StartSync()要么从队列中删除项目,要么在队列为空时返回null.GetOrders()处理对象.

问题是有时代码在此行引发NullReferenceException Task.Run(()=> GetOrders(sync.SyncId,customerId));

在调试器中,Sync是null(异常的原因),但customerId有一个值.这告诉我同步在前一行有一个值.这让我感到困惑,我认为它与Task.Run和线程有关,但我不明白本地范围的变量如何自发地改变它的值.

c# multithreading nullreferenceexception

3
推荐指数
1
解决办法
88
查看次数

无法使用foreach获取XML值

我想使用foreach获取subdata和subdata2值,但由于某种原因,我得到一个空引用异常.

XML:

<project>
<name>Name1</name>
<data>
    <subdata>1</subdata>
    <subdata2>1</subdata2>
</data>
<data>
    <subdata>3</subdata>
    <subdata2>2</subdata2>
</data>
</project>
Run Code Online (Sandbox Code Playgroud)

码:

XmlNode datanode = doc.DocumentElement.SelectSingleNode("/project/data");
XmlNode innerDataNode;
foreach (XmlNode dataVar in datanode)
{
    innerDataNode = datanode.SelectSingleNode("/subdata");
    int subdataVal = XmlConvert.ToInt16(innerDataNode.InnerText);
    //(...)
}
Run Code Online (Sandbox Code Playgroud)

例外:

System.NullReferenceException:'对象引用未设置为对象的实例.innerDataNode为null.

我究竟做错了什么?

c# xml nullreferenceexception

3
推荐指数
1
解决办法
83
查看次数