Существуют ли в c # параметры функции "небезопасный тип" и как мы можем их создать? - PullRequest
0 голосов
/ 01 декабря 2009
public List<string> Attributes = new List<string>();

public void Add(string key, string value)
{
    if (value.ToString() != "")
    {
        Attributes.Add(key + "=\"" + value + "\" ");
    }
}

public void Add(string key, int value)
{
    if (value.ToString() != "")
    {
        Attributes.Add(key + "=\"" + value + "\" ");
    }
}

Итак, вместо двух функций Add, мы можем сделать только одну? Например

public void Add(string key, <var> value)
{
    if (value.ToString() != "")
    {
        Attributes.Add(key + "=\"" + value + "\" ");
    }
}

Ответы [ 3 ]

6 голосов
/ 01 декабря 2009

Обратите внимание, что в этом случае целочисленная версия вашей функции должна быть в любом случае преобразована в строку для включения в список. Так что, если вся ваша проблема действительно такая, как указано, вам нужна только строковая версия вашей функции и вы можете просто вызвать ее так:

int SomeValue = 42;
string SomeName= "The Answer to Life, the Universe, and Everything";
Add(SomeName, SomeValue.ToString());

Но если вы спрашиваете о более общей проблеме, вы можете просто использовать тип object, например:

public void Add(string key, object value)
{
    if (value != null)
    {
        Attributes.Add(key + "=\"" + value.ToString() + "\" ");
    }
} 

Или даже лучше, просто используйте String.Format:

String.Format("{0}=\"{1}\"", SomeName, SomeValue);
4 голосов
/ 01 декабря 2009
public void Add<T>(string key, T value)
{
    if (value.ToString() != "")
    {
        Attributes.Add(key + "=\"" + value + "\" ");
    }
}

использование

Add("key", 22);
Add("key", "value");
1 голос
/ 01 декабря 2009

используйте Object для типа.

public void Add(string key, object value)
{
     if(value == null) {return;}

     var sval = value.ToString();
     if(sval != "")
     { Attributes.Add( key + "=\"" + sval + "\""}
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...