0
怎麼能夠從A級到B級的爲空的實例可爲空的情況下進行轉換,而B是A的子類,我試過,但它崩潰:從一個空類型轉換爲另一種可空類型
class A
{
}
class B:A
{
}
A? instance_1=something_maybe_null;
if (instance_1.GetType() == typeof(B))
{
((B)(instance_1))?.some_method_in_B(paramters);
}
如果我移動?到parathesis,它不會編譯:
...
if (instance_1.GetType() == typeof(B))
{
((B)(instance_1)?).some_method_in_B(paramters);
}
你不能有可爲空的引用類型,只能爲可爲null的值類型!類是默認情況下可以爲null的引用類型。因此,如果A是一個類,那麼'A?'不是有效的。 – JanDotNet
檢查此:https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/nullable-types/using-nullable-types – AVEbrahimi
'?.'是空條件運算符,它檢查空值在執行成員訪問操作之前(https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/operators/null-conditional-operators)。如果左側運算符包含空值,則整個操作停止。 –