member variable(Not GameObject) become null,I cant find out where set it null

public class BindingServerProperty : MonoBehaviour {

public UILabel nameLabel;
private ServerProperty **server**;
public ServerProperty Server{
    set
    {
        server = value;
        nameLabel.text = server.name;
        
    }
    get
    {
        return server;
    }
}

just the variable “server”,There are only one place can change his value on another script
using UnityEngine;
using System.Collections.Generic;
using ZSJ.MessageDispatchSystem;

public class ServerChoosePanelLogic : MonoBehaviour {
public UIGrid grid;
public GameObject btnServerGreen;
public GameObject btnServerRed;

void Awake()
{

}

void Start()
{
    InitServerList();
}

private void InitServerList()
{
    //从服务器获取服务器信息
    List<ServerProperty> serverList = GetGameServersFromServer();
    foreach (var server in serverList)
    {
        AddBtnToServerList(server);
    }
    grid.Reposition();
}

private List<ServerProperty> GetGameServersFromServer()
{
    List<ServerProperty> serverList = new List<ServerProperty>();
    //TODO
    //暂时以本地生成的随机数据做代替
    int serverNum = Random.Range(5, 40);
    for (int i = 1; i <= serverNum ; i++)
    {
        ServerProperty server = new ServerProperty(
            string.Format("127.154.5.{0}", 20 + i)
            , string.Format("{0}区 魔界", i)
            , (ServerState)Random.Range(0, 2)
            );
        serverList.Add(server);
    }

    return serverList;
}

private void AddBtnToServerList(ServerProperty server)
{
    Debug.LogFormat("AddBtn time is{0}",Time.realtimeSinceStartup);
    GameObject btn = null;
    switch (server.state)
    {
	case ServerState.Green:
        btn = btnServerGreen;
        break;
    case ServerState.Red:
        btn = btnServerRed;
        break;
    default:
        break;
    }
    **btn.GetComponent<BindingServerProperty>().Server = server;**
    NGUITools.AddChild(grid.gameObject, btn);

}

}

i’m sure that the server which be send to AddBtnToServerList is not null,becase nameLabel.text = server.name; work fine. but when i want to use the variable “server”,it is null.i’m confused.

The problem is handled,the cause is btn.GetComponent().Server = server;,the btn is just a prefab ,not a gameobject.im used to using Instantiate ,but this time i used NGUITool.Addchlid.