执行以下代码时,我收到 NullReferenceException。我还注意到,当我添加将单元格写入主表的代码时,嵌套表出现在新页面上。如果我取出将单元格写入主表的两个循环,则不会发生这种情况。
<%@ Page Title="" Language="C#" MasterPageFile="~/Main.master" %>
<%@ Import Namespace="iTextSharp.text" %>
<%@ Import Namespace="iTextSharp.text.pdf" %>
<%@ Import Namespace="System.IO" %>
<script runat="server">
protected void Page_Load(object sender, EventArgs e)
{
Document doc = new Document(PageSize.LETTER);
// Here is some stuff needed to put the pdf into the users response stream
Response.Clear();
Response.ContentType = "application/pdf";
MemoryStream memoryStream = new MemoryStream();
PdfWriter writer = PdfWriter.GetInstance(doc, memoryStream);
writer.CloseStream = false; // This is important, but it may work without it
doc.SetMargins(20, 20, 36, 10); …Run Code Online (Sandbox Code Playgroud) 我正在构建一个icosphere,我已经得到了代码的绘制部分,但我一直得到一个NullReferenceException是未处理的错误.我知道它指的是哪些代码,但我不知道实际上是什么错误或如何解决它.
这是类代码:
using System;
using System.Collections.Generic;
using System.Linq;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Audio;
using Microsoft.Xna.Framework.Content;
using Microsoft.Xna.Framework.GamerServices;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework.Input;
using Microsoft.Xna.Framework.Media;
namespace Icosahedron_Test
{
/// <summary>
/// This is the main type for your game
/// </summary>
public class Game1 : Microsoft.Xna.Framework.Game
{
GraphicsDeviceManager graphics;
SpriteBatch spriteBatch;
Camera camera;
VertexPositionColor[] verts;
VertexBuffer vertexBuffer;
BasicEffect effect;
Matrix worldTranslation = Matrix.Identity;
Matrix worldRotation = Matrix.Identity;
int radius = 1; //planet radius
int refinement = 2; // number of times to refine …Run Code Online (Sandbox Code Playgroud) 我正在尝试这段代码:
private List<book> books;
//private book[] books;
.
.
.
private void button1_Click(object sender, EventArgs e)
{
books.Add(new book(book_name.Text));
//book[0]=new book(book_name.Text);
}
Run Code Online (Sandbox Code Playgroud)
但我收到这个错误:
'你调用的对象是空的.'
我该怎么办?我希望通过事件动态创建对象.
我有以下通用代码:
public V put(K key, V value){
Object o = doOp(ClusterOperation.CONCURRENT_MAP_PUT, key, value);
return (V)o;
}
Run Code Online (Sandbox Code Playgroud)
问题是,Object o可以为null.当我使用像String这样的对象时,可以将null强制转换为String.但是当V表示int时,则null cast to int抛出NullReferenceException.
有没有足够通用的解决方案并处理int?
谢谢
我有问题弄清楚为什么我接收"未设置为对象实例的对象引用"此表示层中的错误:
TempAccountManager.Accounts.Add(tempAccount);
我已经使用Visual Studios调试器和帐户获取创建了代码.我相信我有一个访问模块的问题,不确定.
表达层
using myBudget.BusinessObject;
using myBudget.BusinessLogic;
namespace myBudget
{
public partial class NewBudgetWizard : Form
{
public int CurrentStep { get; set; }
public Account TempAccount = new Account();
public AccountManager TempAccountManager = new AccountManager();
public NewBudgetWizard()
{
private void createAccountList(ListView lvAccounts)
{
foreach (ListViewItem lvi in lvAccounts.Items)
{
int tempAccNumber = Int32.Parse(lvi.SubItems[0].Text);
string tempAccName = lvi.SubItems[1].Text;
string tempAccType = lvi.SubItems[2].Text;
decimal tempAccBalance = decimal.Parse(lvi.SubItems[3].Text, System.Globalization.NumberStyles.Currency);
Account tempAccount = new Account(tempAccNumber, tempAccName, tempAccType, tempAccBalance, DateTime.Now);
TempAccount = …Run Code Online (Sandbox Code Playgroud) c# oop access-modifiers object-reference nullreferenceexception
据我所知Console.WriteLine()(或Console.Write())调用object的ToString()方法来获取对象的字符串represantation对吗?所以这两个电话Console.WriteLine()是一样的吗?
Foo foo = new Foo();
Console.WriteLine(foo); // This is same as the one bellow
Console.WriteLine(foo.ToString());
Run Code Online (Sandbox Code Playgroud)
所以我们假设以下情况.我声明一个实例化一个Foos数组.
Foo[] foos = new Foo[10]; // After this line all 10 Foos are `null`s
Run Code Online (Sandbox Code Playgroud)
然后我在数组的任何元素上调用Console.WriteLine()而不实例化Foos本身.所以在这种情况下我们有一个Foos数组,并且数组中的每个Foo都是null如此调用Console.WriteLine()应该导致a NullReferenceException被抛出?但事情是,如果你这样称呼它
Console.WriteLine(foos[0])
Run Code Online (Sandbox Code Playgroud)
没有任何事情发生,除了Environment.NewLine在控制台窗口中写入,但如果你这样称呼它
Console.WriteLine(foos[0].ToString())
Run Code Online (Sandbox Code Playgroud)
它实际上抛出了一个NullReferenceException.这两个电话有什么区别?我的意思是在第一个我没有ToString()明确调用,但不应该由Console.WriteLine()隐式调用它?如何NullReferenceException在第一种情况下抛出?
我问在你试图用foreach循环迭代的对象为空时抛出异常是什么原因?
例如,以下代码抛出异常:
public void Test()
{
IEnumerable<int> numbers = null;
foreach (var number in numbers)
{
//Do stuff
}
}
Run Code Online (Sandbox Code Playgroud)
现在修复很简单,只需在foreach循环之前检查null.
public void Test()
{
IEnumerable<int> numbers = null;
if (numbers != null)
{
foreach (var number in numbers)
{
//Do stuff
}
}
}
Run Code Online (Sandbox Code Playgroud)
我的想法是,你可以用foreach循环做的一切,你只需要一个常规的for循环,因此foreach循环基本上存在,因为它更方便编写和更容易阅读.重要的是写它更方便.如果创建的东西很方便,为什么不一直这样做,在这种情况下隐式执行null检查.现在可能存在一些情况,如果集合为null,你实际上想要抛出异常但是,我觉得那些是目前为止的少数,它们应该是你需要显式并检查null的情况.类似于以下内容:
public static void Test()
{
IEnumerable<int> numbers = null;
if (numbers == null)
throw new NullReferenceException();
foreach (var number in numbers)
{
//Do stuff
}
}
Run Code Online (Sandbox Code Playgroud) 我在这个LINQ查询中得到一个不寻常的"NullReferenceException未被用户代码处理"错误:
List<UDIDInfo> d2Android = d2.Where(x.DeviceOS == (byte)DeviceOS.Android).ToList();
Run Code Online (Sandbox Code Playgroud)
我继续并添加了一个空检查,但仍然收到错误
List<UDIDInfo> d2Android = d2.Where(x => x.DeviceOS != null && x.DeviceOS == (byte)DeviceOS.Android).ToList();
Run Code Online (Sandbox Code Playgroud)
请注意,(byte)DeviceOS.Android并且d2都不为空
编辑(解决方案):
List<UDIDInfo> d2Android = d2.Where(x => x != null && x.DeviceOS != null && x.DeviceOS == (byte)DeviceOS.Android).ToList();
Run Code Online (Sandbox Code Playgroud) 本地项目运作完美.它正在执行,数据库中有适当的条目.但是当我在暂存时将它部署到云时,它会将此错误作为未设置为实例的对象引用.我的项目需要每个Web和辅助角色的2个实例,但由于我有一个限量版的免费实例,我每个只使用一个.这可能是个问题吗?我使用SDK 1.8它是ASP.Net项目.
任何人都可以建议我如何解决这个问题?
cloud instance azure object-reference nullreferenceexception