Đoạn mã sau dẫn đến việc sử dụng biến cục bộ chưa được gán "numberOfGroups" :
int numberOfGroups;
if(options.NumberOfGroups == null || !int.TryParse(options.NumberOfGroups, out numberOfGroups))
{
numberOfGroups = 10;
}
Tuy nhiên, mã này hoạt động tốt (mặc dù, ReSharper nói rằng mã = 10
này là thừa):
int numberOfGroups = 10;
if(options.NumberOfGroups == null || !int.TryParse(options.NumberOfGroups, out numberOfGroups))
{
numberOfGroups = 10;
}
Tôi có thiếu một cái gì đó, hoặc là trình biên dịch không thích của tôi ||
?
Tôi đã thu hẹp điều này để dynamic
gây ra sự cố ( options
là một biến động trong đoạn mã trên của tôi). Câu hỏi vẫn còn đó, tại sao tôi không thể làm điều này ?
Mã này không biên dịch:
internal class Program
{
#region Static Methods
private static void Main(string[] args)
{
dynamic myString = args[0];
int myInt;
if(myString == null || !int.TryParse(myString, out myInt))
{
myInt = 10;
}
Console.WriteLine(myInt);
}
#endregion
}
Tuy nhiên, mã này thực hiện :
internal class Program
{
#region Static Methods
private static void Main(string[] args)
{
var myString = args[0]; // var would be string
int myInt;
if(myString == null || !int.TryParse(myString, out myInt))
{
myInt = 10;
}
Console.WriteLine(myInt);
}
#endregion
}
Tôi không nhận ra dynamic
sẽ là một yếu tố trong việc này.
out
tham số. Chắc chắn rất thú vị khi xem xét trình biên dịch nên tạo ra mã trợ giúp nào để tránh sự cố hoặc nếu điều đó thậm chí có thể xảy ra.
out
param như là đầu vào