bir parametre olarak bir yöntem çağrısında bir dize dizisi başlatılıyor?C#
DoSomething(10, {"One", "Two", "Three"});
Doğru (ama umarım uzun yoldan değil) ne olurdu?
bir parametre olarak bir yöntem çağrısında bir dize dizisi başlatılıyor?C#
DoSomething(10, {"One", "Two", "Three"});
Doğru (ama umarım uzun yoldan değil) ne olurdu?
bunu yapabilirsiniz:
DoSomething(10, new[] {"One", "Two", "Three"});
sağlanan tüm nesneler aynı türden sen dizi tanımında türünü belirtmek gerekmez
bu deneyin:
DoSomething(10, new string[] {"One", "Two", "Three"});
Bunu yaparken aşağıdaki şekilde iletebilirsiniz:
DoSomething(10, new string[] { "One", "Two", "Three"});
DoSomething
, değiştirebileceğiniz bir işlevse, dizi oluşturmadan birden çok argümandan geçmek için params
anahtar sözcüğünü kullanabilirsiniz. Ayrıca dizileri doğru bir şekilde kabul eder, dolayısıyla mevcut bir diziyi "deconstruct" yapmaya gerek yoktur.
class x
{
public static void foo(params string[] ss)
{
foreach (string s in ss)
{
System.Console.WriteLine(s);
}
}
public static void Main()
{
foo("a", "b", "c");
string[] s = new string[] { "d", "e", "f" };
foo(s);
}
}
Çıktı:
$ ./d.exe a b c d e f
Bu ayrıca parlak bir öneridir! –
Mükemmel! Yeni [] 'nin neden gerekli olduğunu açıklayabilir misiniz? Yaptıysam: string [] MyString = {"Bir", "Two", "Three"}; iyi çalışıyor mu? –
, sözdiziminin çalıştığı yoldur. Bunu yapamazsınız: var x = string [] {"Bir", "İki", "Üç"}; ama bunu yapabilirsin y = yeni [] {"Bir", "İki", "Üç"}; –
Bu makaleler çok kullanışlıdır. nesne başlatıcılar kod sooo daha temiz yaparlar http://weblogs.asp.net/scottgu/archive/2007/03/08/new-c-orcas-language-features-automatic-properties-object-initializers-and-collection-initializers .aspx ve orijinal sorunuz hakkında daha fazla bilgi için bkz. http://msdn.microsoft.com/en-us/library/ms364047(VS.80).aspx#cs3spec_topic7 –