Dictionary vs KeyValuePair vs Struct - C#

Dictionary

// Declare Dictionary and assign value
Dictionary<stringobjectparameter = new Dictionary<stringobject>();
parameter["View"] = viewComp;
parameter["Play"] = true;

FunctionName(parameter);

// Use Dictionary
private void FunctionName(object parameter)
{
    Dictionary<stringobjectdict = (Dictionary<stringobject>)parameter;
    
GameObject viewComp = (GameObject)dict ["View"];
    bool play = (bool)dict["Play"];
    UseValuesInFunction(viewCompplay);
}


KeyValuePair :

KeyValuePair<GameObjectboolparameter = new KeyValuePair<GameObjectbool>(viewComptrue);

FunctionName(parameter);
// Use KeyValuePair                  
private void FunctionName(object parameter)
{
    KeyValuePair<GameObjectboolparam = (KeyValuePair<GameObjectbool>)parameter;    
    GameObject viewComp = (GameObject)dict ["View"];    
    bool play = (bool)dict["Play"];    UseValuesInFunction(viewCompplay);


Struct:

    public struct StructData
    {
        public GameObject GameObj;
        public bool Play;
        
        public 
StructData(GameObject gameObjbool play)
        {
            
GameObj = gameObj;
            Play = play;
        }
    }


StructData parameter = new StructData(particle,play);
FunctionName(parameter);

public void FunctionName(object parameter)
{
    
StructData param = (StructData)parameter;
    GameObject particle = (
GameObject)param.ParticleSys;
    bool play = (bool)param.Play;


}





_________________________________________________

Other types of cases :

List<objectparameter = new List<object>();
parameter.Add(new KeyValuePair<stringobject>("View"viewComp));
parameter.Add(new KeyValuePair<stringobject>("Play"true));


FunctionName(parameter);

private void FunctionName(object parameter)
{
    List<objectparam = (List<object>)parameter;
    GameObjectViewComponent viewComp = null;
    bool play = false;

    for (int i = 0count = param.Counti < counti++) 
    {
        KeyValuePair<stringobjectpair = (KeyValuePair<stringobject>)param[i];
        switch(pair.Key)
        {
            case "View":
                viewComp = (GameObjectViewComponent)pair.Value;
                break;
                
            case "Play":
                play = (bool)pair.Value;
                break;
        }
    }
    
UseValuesInFunction(viewCompplay);
}


//or

FunctionName2(parameter);

private void FunctionName2(object parameter)
{
    // Here you will have to read values exactly in order you have entered.
    List<objectparam = (List<object>)parameter;
    KeyValuePair<stringobjectpair = (KeyValuePair<stringobject>)param[0];
    GameObjectViewComponent viewComp = (GameObjectViewComponent)pair.Value;

    pair = (KeyValuePair<stringobject>)param[1];
    bool play = (bool)pair.Value;

    UseValuesInFunction(viewCompplay);
}




Another way of doing this is to just use the List of objects.

List<object>

List<objectparameter = new List<object>();
parameter.Add(
particle);
parameter.Add(effectLocator);
parameter.Add(delay);
parameter.Add(play);

FunctionName(parameter);

public void FunctionName(object parameter)
{
     List<objectparam = (List<object>)parameter;

     ParticleSystem particle = (ParticleSystem)param[0];
     Transform effectLocator = (Transform)param[1];
     float delay = (float)param[2];
     bool play = (bool)param[3];

     .....
     .....

}





Comments

Popular posts from this blog

Bounding Box in PIL (Python Image Library)

Rendering order and Z-sorting