标签: nullreferenceexception

设置对象成员时出现NullReferenceException

我运行以下程序时收到NullReferenceException.我认为问题来自于我正在创建一个Line包含Point类的事实.

using System;

class Driver
{
    static void Main()
    {
        Point pOne = new Point();
        Point pTwo = new Point(2, 1);

        Console.Write("Point pOne: ");
        PrintPoint(pOne);

        Console.Write("Point pthree: ");
        PrintPoint(pTwo);

        Line lOne = new Line(pOne, pTwo);

        Console.WriteLine("Line lOne: ");
        PrintLine(lOne);

        //Rectangle rOne = new Rectangle();
        Rectangle rOne = new Rectangle(lOne);

        Console.WriteLine("Rectangle rOne: ");
        PrintRectangle(rOne);

        Console.ReadLine();
    }

    // The PrintPoint method
    // purpose: display the coordinates of a Point
    // Parameters: a Point object
    // returns: none
    static …
Run Code Online (Sandbox Code Playgroud)

c# exception class nullreferenceexception

1
推荐指数
2
解决办法
1098
查看次数

是否允许NullReferenceExceptions发生坏事?

我正在玩Pex和Moles,在运行Pex之后发现几乎Pex所说的所有测试都失败了,因为NullReferenceExceptions是"允许的".阅读Pex文档,我发现了以下内容:

如果较高级别的组件将格式错误的数据传递给较低级别​​组件(较低级别组件拒绝)的较低级别组件,则应首先阻止较高级别组件执行此操作.

所以上面提到的是我们应该在使用类似的东西调用其他方法/类之前测试空值:

if(foo == null)
   throw new ArgumentNullException("its null and this shouldn't happen")
else
   Bar(foo); //won't get a null reference exception here because we checked first...
Run Code Online (Sandbox Code Playgroud)

恕我直言,检查全部空值对性能和代码臃肿的原因没有多大吸引力,但我想听听其他人不得不说的话......

c# pex nullreferenceexception

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

为什么在C#中使用something.Equals(null)时会出现空引用错误

当我尝试检查某些内容是否为空时,我一直收到空引用错误.我有一个名为User的类,我像这样初始化变量indvUser

User indvUser = api.Users.SearchByExternalId(session.UserInfo.UserId.ToString())
                   .Users.FirstOrDefault();
Run Code Online (Sandbox Code Playgroud)

然后我想检查indvUser是否为null

if (indvUser.Equals(null))
{
    int a = 1;
}
Run Code Online (Sandbox Code Playgroud)

但是在使用时我得到一个空引用错误Equals(null),我不明白.如果它实际上是null,即没有值,不应该Equals(null)返回true?

c# nullreferenceexception

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

Automapper Project.To Null引用异常

我正在尝试使用Automapper QueryableExtensions将基于EF的实体投影到涉及自定义解析器的dto中.它在AutoMapper.PropertyMap.ResolveExpression中使用NRE失败.我已经跟踪了代码,但它失败了,因为PropertyMap类中的CustomExpression为null.

我可以使用下面给出的简单内存集合轻松地重现这一点(虽然我知道Project.To旨在与支持的LINQ提供程序一起使用).

这是示例代码......我错过了一些明显的东西吗?

public class Contract
    {
    public string ContractNumber { get; set; }
    public DateTime SettlementDateTime { get; set; }
    }

    public class ContractDto
    {
    public Settlement Settlement { get; set; }
    }

    public class Settlement
    {
    public string DeliveryLocation { get; set; }
    public DateTime SettlementDateTime { get; set; }
    }

    public class ContractProfile : Profile
    {
    protected override void Configure()
    {
    IMappingExpression map = Mapper.CreateMap();
    map.ForAllMembers(opts => opts.Ignore());
    map.ForMember(v => v.Settlement, opts => opts.ResolveUsing());
    }

    } …
Run Code Online (Sandbox Code Playgroud)

nullreferenceexception automapper

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

C#调用方法参数空引用异常

我想从字符串中调用一个方法,但它不允许我null作为参数传递.该方法不需要参数.

private void reconnect_Click(object sender, EventArgs e)
{
   string methodName = "data_load1";

   //Get the method information using the method info class
   MethodInfo mi = this.GetType().GetMethod(methodName);

   //Invoke the method
   mi.Invoke(this, null);
}
Run Code Online (Sandbox Code Playgroud)

data_load方法:

private void data_load1()
{
     this.dataTableAdapter.Fill(this.myDataSet.data);
}
Run Code Online (Sandbox Code Playgroud)

我收到NullReferenceException was unhandledmi.Invoke(this, null);.为什么这不让我传递null参数?

c# methods invoke nullreferenceexception winforms

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

ViewModel错误:未将对象引用设置为对象的实例

我不明白为什么我会收到这个错误,请你帮我找一下我做错了什么?

我想用这个ViewModel实现的是因为我有许多记录使用相同的CartId将其用作父项,并将booking.Item.ItemName用作子项.

你能否告诉我,我试图做的方式是否正确?

控制器:

public ActionResult MyBookings()
{

    var myBookingList = SystemDB.Carts.Where(s => s.Booking.Login == strLoginName).OrderByDescending(s => s.RecordId).Take(10);


    List<MyBookingsViewModel> result = new List<MyBookingsViewModel>();
    foreach (var item in myBookingList)
    {
        MyBookingsViewModel model = new MyBookingsViewModel();

        model.Carts.RecordId = item.RecordId;
        model.Carts.CartId = item.CartId;
        model.Carts.Booking.Item.ItemName = item.Booking.Item.ItemName;
        model.Carts.Booking.UserFullName = item.Booking.UserFullName;
        model.Carts.Booking.RequestDate = item.Booking.RequestDate;
        model.Carts.StatusCode.StatusCodeName = item.StatusCode.StatusCodeName;
        result.Add(model);
    }


    return View(result);
}
Run Code Online (Sandbox Code Playgroud)

模型:

public class MyBookingsViewModel
{
    public Cart Carts { get; set; }
    public List<Booking> Bookings { get; set; }
}

public class Cart …
Run Code Online (Sandbox Code Playgroud)

c# asp.net asp.net-mvc nullreferenceexception

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

为项设置属性值会导致NullReferenceException

基本上我要做的是在客户列表中添加一个客户,在客户列表中有一个属性BillToContact.我想为客户创建一个实例BillToContact.

public class Customer 
{
    public string  ID { get; set; }
    public string  AccountName { get; set; }
    public Contact BillToContact { get; set; }
}

public class BillToContact
{
    public string firstname { get; set; }
    public string LastName  { get; set; }
}

public class Contact
{
    public string FirstName { get; set; }
    public string LastName { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

//下面是尝试将BillToContact添加到Customer

public void test()
{
  List<Customer> Customer = new List<Customer>();

  Customer x = new Customer(); …
Run Code Online (Sandbox Code Playgroud)

c# nullreferenceexception

1
推荐指数
2
解决办法
101
查看次数

完全限定的属性名称

我试图防止 System.NullReferenceException。

我有一个公司,它有一个雇员的集合。每个员工都有一组技能。

SelectedEmployee 指向 Employee 集合中当前选定的元素。

SelectedSkill 指向技能集合中当前选定的元素。

我有一个 ListView,它的 ItemSource 绑定到 Skills 集合;ListView 的 SelectedItem 绑定到 SelectedSkill。

删除技能时,我希望 ListView 滚动到最后一个元素。

private void DeleteSelectedSkillFromSelectedEmployee()
{
    Company.SelectedEmployee.Skills.Remove(Company.SelectedEmployee.SelectedSkill);
    EmployeeSkillsListView.ScrollIntoView(Company.SelectedEmployee.Skills.Last());
}
Run Code Online (Sandbox Code Playgroud)

如果尚未选择 Employee,则 SelectedEmployee 将为 null。在方法内部执行任何操作时,这将导致 System.NullReferenceException。

注意:我使用了一个扩展方法来替换 .Last() 所以它不会在空集合上出错。

为了解决这个问题,我使用了一个 Util 方法:

public static class Utils
{
    public static bool PropertyExists(Object obj, String name)
    {
        foreach (String part in name.Split('.'))
        {
            if (obj == null) { return false; }

            Type type = obj.GetType();
            System.Reflection.PropertyInfo info = type.GetProperty(part);

            if (info == null) …
Run Code Online (Sandbox Code Playgroud)

c# nullreferenceexception

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

工具栏后退按钮错误Android

我想在我创建的工具栏中添加一个“后退”按钮,因为我删除了默认的按钮,以使某些选项卡具有材料设计效果,但是每次添加代码以使该按钮出现时,Android 都会给出一个异常,说明如下:

E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.juan.sdfnsdfnskdfnskdfmsfd, PID: 13348
java.lang.NullPointerException: Attempt to invoke virtual method 'int android.support.v4.widget.DrawerLayout.getDrawerLockMode(int)' on a null object reference
at android.support.v7.app.ActionBarDrawerToggle.toggle(ActionBarDrawerToggle.java:284)
at android.support.v7.app.ActionBarDrawerToggle$1.onClick(ActionBarDrawerToggle.java:202)
at android.view.View.performClick(View.java:6308)
at android.view.View$PerformClick.run(View.java:23969)
at android.os.Handler.handleCallback(Handler.java:751)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6823)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1557)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1445)
Run Code Online (Sandbox Code Playgroud)

如果我只在我创建的工具栏中编写相应的代码,我不明白空对象引用意味着什么。

这是toolbar.xml:

<android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/toolbar_morado"
android:id="@+id/toolbar_lista_compras"
android:minHeight="?attr/actionBarSize">

<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">

<TextView
    android:id="@+id/contador_toolbar"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Lista de compras"
    android:textSize="18sp"
    android:textColor="#ffffff"/>

</RelativeLayout>

</android.support.v7.widget.Toolbar>
Run Code Online (Sandbox Code Playgroud)

这是我实现工具栏的地方:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">

    <android.support.design.widget.AppBarLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content" …
Run Code Online (Sandbox Code Playgroud)

java android nullreferenceexception android-studio android-toolbar

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

使用空合并运算符时的 System.NullReferenceException

我遇到了一个我似乎无法修复的错误。在对 Stack Overflow 进行了一些研究之后,似乎空合并运算符可以解决我的问题,但它并没有帮助。这是给出错误的代码:

List<OperationsReviewLevelResult> results = new List<OperationsReviewLevelResult>();
foreach (var approval in OperationsReviewers.ApprovalItems)
{
     var result = new OperationsReviewLevelResult();
     result.ApproverName = approval.Results.FirstOrDefault().Name ?? "";
     result.ReviewLevel = approval.Name;
     result.Comment = approval.Results.FirstOrDefault().Comments ?? "";
     results.Add(result);
}
Run Code Online (Sandbox Code Playgroud)

当我运行此代码时,我得到:

异常详细信息:System.NullReferenceException:未将对象引用设置为对象的实例。

从行而来result.ApproverName = approval.Results.FirstOrDefault().Name ?? "";。我添加了空合并运算符来检查空值,但这并没有解决我的问题。错误是因为没有Resultsin批准所以我假设FirstOrDefaultlinq方法会返回默认值,当它意识到默认值有一个空值时Name,它会使用空合并运算符返回""右侧的空字符串运营商的。

如果我遗漏了什么,请告诉我,因为我似乎无法理解为什么即使添加空合并运算符也会收到此错误。

编辑:正如评论中所建议的,查看这篇文章帮助我更多地了解我收到此错误的原因。虽然问题有点不同,但我强烈建议阅读答案以全面了解我的问题。

.net c# linq nullreferenceexception

1
推荐指数
2
解决办法
386
查看次数