Я пытался подумать о ситуациях, когда вы действительно можете использовать неявное преобразование в массив. Я начал задаваться вопросом, можно ли облегчить многие ситуации, когда вы захотите сделать это, используя ключевое слово params.
Основное положение, что я мог думать только о том, что у вас один пункт что-то и хотел, чтобы передать его в функцию, которая принимает массив в качестве параметра:
static void Main(string[] args)
{
string x = "I'm just a poor variable. Nobody loves me.";
Stickler.IOnlyTakeArrays_Rawr111(x); // won't go in! square peg, round hole, etc.
// *sigh* fine.
Stickler.IOnlyTakeArrays_Rawr111(new[] { x });
}
class Stickler
{
public static void IOnlyTakeArrays_Rawr111(string[] yum)
{
// ...
}
}
Надеюсь, в этой ситуации автор метода, который вы хотите позвонить, уже выбрали использовать Params ключевое слово, чтобы позволить вам пройти переменную без упаковки его в массив:
class DataConcierge
{
public static T Create<T>(int id)
{
// ...
}
public static void Save<T>(params T[] items)
{
// ...
}
}
static void Main(string[] args)
{
var customer = DataConcierge.Create<Customer>(123);
// ...
DataConcierge.Save(customer); // this works!
//----------------------------------------------------
// or
//----------------------------------------------------
var customers = new Customer[]
{
DataConcierge.Create<Customer>(123),
DataConcierge.Create<Customer>(234),
DataConcierge.Create<Customer>(345),
};
// ...
DataConcierge.Save(customers); // this works too!
}
конечно, это не очень поможет вам в ситуациях, когда вы нужно преобразовать переменную в один элемент arr ay, но не как параметр для метода или в ситуациях, когда автор метода не использовал ключевое слово params.
Но какова бы ситуация была первой? Назначение массива для свойства? Psh. Как часто это происходит?
И последнее? Если автор не использовал ключевое слово params, когда они могли это сделать, отправьте им письмо с жалобой на него. Если автор сам, не стесняйтесь быть дополнительным воюющим в письме.
Надеюсь, вы можете сказать, что я преуспеваю. Серьезно, однако, существуют ли какие-либо другие общие ситуации использования, которые вы можете придумать, где ключевое слово params не применимо?
** Отказ от ответственности: Я не сторонник чрезмерного использования ключевого слова params. Используйте его, если вы считаете, что хотите, но не принимайте мое сообщение, чтобы вы всегда использовали ключевое слово params, когда можете.
Нет, я бы хотел, чтобы вы сделали это! :( – mquander
это незаконное конвертирование - плохой шаблон ИМО. Что бы вы хотели сделать? Может быть, есть и другой способ сделать это –