簡體   English   中英

為什么C#推斷這種類型是動態的?

[英]Why does C# infer this type as dynamic?

我有以下代碼。

public static void GuessTheType()
{
    dynamic hasValue = true;
    dynamic value = "true";

    var whatami1 = hasValue ? (string)value : null;
    var whatami2 = hasValue ? bool.Parse(value) : true;
    var whatami3 = hasValue ? (bool)bool.Parse(value) : true;
}

編譯器為whatami1推斷的類型是string
編譯器為whatami2推斷的類型是dynamic
編譯器為whatami3推斷的類型是bool

為什么第二種類型不是bool

為了擴展PetSerAl的注釋,它解釋了為什么它被視為動態的,你可以通過將值轉換為字符串來避免將bool.Parse的調用視為動態:

var whatami2 = hasValue ? bool.Parse((string)value) : true;

轉換是我們斷言(對編譯器)一個對象確實是其他東西 - 例如:

var whatami1 = hasValue ? (string)value : null;
var whatami3 = hasValue ? (bool)bool.Parse(value) : true;

最后,解析是從沒有內在關系的表單中解釋一個值 - 即動態(即值)和var(即whatami2)之間沒有直接關系,但我們可以解析:

var whatami2 = hasValue ? bool.Parse(value) : true;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM