簡體   English   中英

未將對象引用設置為使用ASP.NET Project的對象的實例

[英]Object reference not set to an instance of an object working with ASP.NET Project

我在比較ASP.NET項目中的2個對象時遇到問題,我不確定我是初學者還是什么,但這是我的實際代碼:

private void CheckFriendshipStatus()
    {


        if (Object.ReferenceEquals(Session["UserId"].ToString(), Session["CurrentProfileId"].ToString()))
        {
            btnAddAsFriend.Visible = false;
        }
        else
        {
            DataTable dt1 = new DataTable();
            string chkfriendRequest = "SELECT * FROM Friends WHERE (MyId='" + Session["UserId"].ToString() + "' and FriendId='" + Session["CurrentProfileId"].ToString() + "') OR (MyId='" + Session["CurrentProfileId"].ToString() + "' and FriendId='" + Session["UserId"].ToString() + "')";

然后我嘗試了:

    var obj1 = Session["UserId"].ToString();
    var obj2 = Session["CurrentProfileId"].ToString();


        if (obj1 == obj2)
        {
            btnAddAsFriend.Visible = false;
        }
    else
    {

然后我嘗試先將值設置為null,然后分配會話值。 我沒有主意,將不勝感激

如果將字符串放入Session中,則可以通過強制轉換將它們作為字符串撤回。

var obj1 = (string)Session["UserId"]

如果obj1恰好為null,則調用obj1.ToString()將導致null引用異常。 如上所示的轉換將避免該異常(盡管如果其中之一為null,則仍然可能是邏輯錯誤,具體取決於程序中的約定)。

如果它們是字符串, ==使用==運算符。 如果兩個變量引用完全相同的對象,則Object.ReferenceEquals()返回true。 由於字符串插入,無論如何這通常會“巧合”地為您提供預期的結果,但是可以關閉字符串插入。

更新:

根據您的澄清意見,幾乎可以確定您正在調用.ToString()一個或兩個Session變量為null。 使用我概述的轉換方法,並使用調試器查看哪個為空。

Session["UserId"]Session["CurrentProfileId"]btnAddAsFriend為null。 從提供的詳細信息中無法分辨出哪個。

這實際上工作的家伙,

    var obj1 = Session["UserId"].ToString();
    var obj2 = Session["CurrentProfileId"].ToString();


    if (obj1 == obj2)
    {
       btnAddAsFriend.Visible = false;
    }

如果對某些可能與步驟1相同的代碼發生這種情況,這將解決該問題!

謝謝所有花時間與我合作並幫助我的人! :)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM