标签: nullreferenceexception

空参考例外

此代码生成Null Reference异常.异常出现在初始化参数数组的行.可能是什么问题?我不知道如何遵循堆栈跟踪并对其执行任何逻辑.提前致谢.

DAL dal = new DAL();

    string SQL = @"INSERT INTO Assets ([AssetName],[AssetType],[Model],[Description],
                                                          [PurchaseValue],[SalvageValue],[Currency],[DateAcquired,[DateRetire],[ImagePath],
                                                          [InUse])
                                                          VALUES (?,?,?,?,?,?,?,?,?,?,?)";

    OleDbParameter[] par = new OleDbParameter[]{ 
    new OleDbParameter("@assetname",name.Text),
    new OleDbParameter("@assettype",assettypes.SelectedValue.ToString()),
    new OleDbParameter("@model",model.Text),
    new OleDbParameter("@description",description.Text),
    new OleDbParameter("@purchasevalue",purchaseval.Value),
    new OleDbParameter("@salvagevalue",salvageval.Value),
    new OleDbParameter("@currency",currencies.SelectedIndex),
    new OleDbParameter("@dateacquired",purchasedate.Value),
    new OleDbParameter("@dateretire",purchasedate.Value.AddYears((int)lifetime.Value)),
    new OleDbParameter("@imagepath","N/A"),
    new OleDbParameter("@addedby",MDIParent1.User.ID)
    };
Run Code Online (Sandbox Code Playgroud)

.net c# oledbparameter nullreferenceexception

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

谁的错误是NullReferenceException?

我目前正在研究一个通过属性公开内部List的类.列表应该并且可以修改.问题是,内部列表中的条目可以从类外部设置为null.

我的代码实际上是这样的:

class ClassWithList
{
    List<object> _list = new List<object>();

    // get accessor, which however returns the reference to the list,
    // therefore the list can be modified (this is intended)
    public List<object> Data
    {
        get
        {
            return _list;
        }
    }

    private void doSomeWorkWithTheList()
    {
        foreach(object obj in _list)
            // do some work with the objects in the list without checking for null.
    }
}
Run Code Online (Sandbox Code Playgroud)

所以现在在doSomeWorkWithTheList()中,我总是可以检查当前列表条目是否为null,或者我可以假设使用此类的人没有将条目设置为null的好主意.

所以最后问题最终出现了:在这种情况下,谁的错误是NullReferenceException?是类开发人员没有检查null的所有错误(这通常会使代码 - 不仅在这个类中 - 更复杂)或者是这个类的用户的错误,因为将List条目设置为null doesn'真的有道理吗?除了在一些非常特殊的情况下,我倾向于通常不检查null的值.这是一种糟糕的风格或事实上的标准/标准吗?

我知道这可能没有最终答案,我只是缺少足够的经验来处理这样的事情,因此想知道其他开发人员对这些案例的看法,并希望听到关于检查null(或不是)的现实情况.

.net c# nullreferenceexception

0
推荐指数
2
解决办法
408
查看次数

NullReferenceException在c#数组中未处理

我收到错误 - NullReferenceException未处理,在以下代码中.我想从字符串pt中提取字符.但是我在for循环之外得到了正确的值,但在它内部却没有.

ArrayList list = read();
int N = Values.N;
string pt = Values.PlainText;
MessageBox.Show(""+pt.Length+" "+pt[0]);
int count = 0;
char[][][] array = new char[6][][];
for(int i=0;i<6;i++)
{
    for(int j=0;j<N;j++)
    {
        for(int k=0;k<N;k++)
        {
            if (count < pt.Length)
            {
                array[i][j][k] = 'r';
                //array[i][j][k] = pt[count];
                //count++;
            }
            else
            {
                array[i][j][k] = 'x';
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

c# arrays nullreferenceexception

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

如何引用字符串会导致空引用异常?

有一个结构:

public struct ReturnedCommands
{
    public string   key;
    public string   command;
};
Run Code Online (Sandbox Code Playgroud)

......和一个变量:

public static ReturnedCommands returnedCommands; 
Run Code Online (Sandbox Code Playgroud)

...并且发生Null Reference Exception,返回值"3":

public bool PendingCommandsExecute_QUERY()
{
    int i = 0;
    try
    {
        i = 1;
        cmdResults b = cmdResults.cmdFail;
        bool retVal = false;
        string command = "QUERY";

        if (returnedCommands.key != command) 
            return false;

        HashResultsAdd(command, "Started");
        i = 2;

        HashStatus.Clear();

        string sNum = PendingCommands.SiteFetchSiteNumber; 
        i = 3; // <-- last one reached (debug int displayed in NRE)
        string s = string.Empty;
        if (returnedCommands.command …
Run Code Online (Sandbox Code Playgroud)

c# .net-1.1 struct exception nullreferenceexception

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

泛型方法返回nullReferenceException

我有这个通用方法总是返回nullReferenceException.我已经把所有不必要的代码拿出来了,它仍然给我一个例外.

    public T RetrieveInformationFromApi<T>(int Id) where T : IMovie
    {
        T result = default(T);

        result.Title = "test";
     }
Run Code Online (Sandbox Code Playgroud)

可以使用三个不同的类来调用该方法,这三个类都具有属性Title,并且all都实现了接口IMovie,但该方法仍然给我一个例外.我究竟做错了什么?

c# generics methods exception nullreferenceexception

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

List(Of T).Find()在找不到值时不起作用,循环更好?

我将不得不离开Find(),.FirstOrDefault()等,并用循环替换它,除非有人能解释如何处理不返回值的列表?

Public Class Form1

    Public Class TestClass
        Public Property item1 As String
        Public Property item2 As String
    End Class

    Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
        Dim myLst As New List(Of TestClass)
        myLst.Add(New TestClass With {.item1 = "A", .item2 = "B"})
        myLst.Add(New TestClass With {.item1 = "C", .item2 = "D"})

        Debug.WriteLine(myLst.Find(Function(n) n.item1 = "X").item1) ' nullreferenceexception, what?

    End Sub

End Class
Run Code Online (Sandbox Code Playgroud)

vb.net lambda nullreferenceexception

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

防止null参数导致'NullReferenceException'

在我的库中,我经常公开将字符串作为参数的方法.我应该总是检查字符串参数是否等于null?或者可以忽略null导致价值的可能性NullreferenceException

例:

public static void Parse(string line)
{
     string[] splits = line.Split(' ');
}
Run Code Online (Sandbox Code Playgroud)

在这种方法中,line可能null会导致Parse抛出一个NullreferenceException.(具体地讲,因为尝试调用的Split一个null值.)我应该检查是否linenull为了防止异常被抛出?

.net c# null exception-handling nullreferenceexception

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

SQL Server 2014中的NullReferenceException

我想在数据库中保存checkboxlist数据.我在SQL中创建了一个名为'tblSubject'的表,并在web.config中创建了connectionstring.但是我仍然得到了erorr:


未设置为对象实例的用户代码对象引用未处理NullReferenceException .

这是c#中的代码:

 private void PopulateSubjects()
{
    using (SqlConnection conn = new SqlConnection())
    {
        conn.ConnectionString = ConfigurationManager
                .ConnectionStrings["constr"].ConnectionString;
        using (SqlCommand cmd = new SqlCommand())
        {
            cmd.CommandText = "select * from subjects";
            cmd.Connection = conn;
            conn.Open();
            using (SqlDataReader sdr = cmd.ExecuteReader())
            {
                while (sdr.Read())
                {
                    ListItem item = new ListItem();
                    item.Text = sdr["Subject"].ToString();
                    item.Value = sdr["Id"].ToString();
                    item.Selected = Convert.ToBoolean(sdr["IsSelected"]);
                    chbox.Items.Add(item);
                }
            }
            conn.Close();
        }
    }
}

protected void Button1_Click(object sender, EventArgs e)
{
    using (SqlConnection conn = new SqlConnection())
    { …
Run Code Online (Sandbox Code Playgroud)

c# sql-server connection-string nullreferenceexception

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

FirstOrDefault中的空引用异常C#

我有这条线:

myobject.Ada = result.FirstOrDefault(m => m.Name == "Ada No").Value;
Run Code Online (Sandbox Code Playgroud)

有时结果没有"Ada No",我得到了

你调用的对象是空的.

我编写了一个if语句来避免空引用异常:

if(result.FirstOrDefault(m => m.Name == "Ada No").Value != null)
{
   myobject.Ada = result.FirstOrDefault(m => m.Name == "Ada No").Value;
}
Run Code Online (Sandbox Code Playgroud)

但它也没有用.如何在这段代码中避免此异常?如果Ada No存在,工作,如果不工作,我怎么写?谢谢.

c# nullreferenceexception

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

仅在Unity 3D播放器中未调试时出现NullReference错误

我在Unity 3D应用程序中工作,我有2个方法通过使用Oauth连接到服务:一个检索令牌,另一个根据令牌从服务检索JSON输出.一旦JSON准备就绪,我就改变了TextMesh上的文本.一切都在TextMesh脚本的start方法中运行.像这样的东西:

void Start()
{
    string authToken = getAuthToken();
    CustomerGroups data = getCustGroups(authToken);

    TextMesh curText = (TextMesh)gameObject.GetComponent(typeof(TextMesh));
    curText.text = data.value[0].Field1+ "-" + data.value[0].Field2;
}
Run Code Online (Sandbox Code Playgroud)

奇怪的是,当我在Visual Studio中使用"附加到Unity"并在Unity播放器中运行GameObject时,这非常有用,但是当我在没有调试的情况下运行它时(比如运行几个步骤)我总是得到:

NullReferenceException: Object reference not set to an instance of an object
HelloWorldInteractive.getAuthToken () (at Assets/HelloWorldInteractive.cs:106)
HelloWorldInteractive.Start () (at Assets/HelloWorldInteractive.cs:15)
Run Code Online (Sandbox Code Playgroud)

实际的方法是:

public string getAuthToken()
{
    string token = string.Empty;
    Dictionary<string, string> content = new Dictionary<string, string>();
    TokenClassName json = null;

    content.Add("tenant_id", "https//...");
    content.Add("grant_type", "client_credentials");
    content.Add("client_id", "xxxx");
    content.Add("client_secret", "xxxx");
    content.Add("resource", "https://...");

    UnityWebRequest www = UnityWebRequest.Post("https://login...", content); …
Run Code Online (Sandbox Code Playgroud)

json nullreferenceexception unity-game-engine oauth-2.0

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