c# string轉int - 如何將C#可空int轉換為int




parse用法 int長度 (13)

如何將可空int轉換為int ? 假設我有兩種類型的int,如下所示:

int? v1;  
int v2; 

我想把v1的值賦給v2v2 = v1; 會導致錯誤。 如何將v1轉換為v2


Answers

它可能與v2 = Convert.ToInt32(v1);


根據您的使用情況,您可以使用C#7的模式匹配功能:

int? v1 = 100;
if (v1 is int v2)
{
    Console.WriteLine($"I'm not nullable anymore: {v2}");
}

GetValueOrDefault()

檢索對象的值。 如果它為null,則返回int的默認值,即0。

例:

v2= v1.GetValueOrDefault();


就我而言,最好的解決方案是使用GetValueOrDefault()方法。

v2 = v1.GetValueOrDefault();

所有你需要的是..

v2= v1.GetValueOrDefault();

喜歡這個,

if(v1.HasValue)
   v2=v1.Value

v1v2之間的簡單轉換是不可能的,因為v1的值域大於v2 。 這是v1可以容納的所有東西加上null狀態。 要進行轉換,您需要明確指出int什麼值將用於映射null狀態。 最簡單的方法是?? 操作者

v2 = v1 ?? 0;  // maps null of v1 to 0

這也可以長時間完成

int v2;
if (v1.HasValue) {
  v2 = v1.Value;
} else {
  v2 = 0;
}

完全可以為int轉換可以這樣完成:

v2=(int)v1;

如果你知道v1有一個值,你可以使用Value屬性:

v2 = v1.Value;

使用GetValueOrDefault方法將為該值分配值,否則為該類型的默認值或您指定的默認值:

v2 = v1.GetValueOrDefault(); // assigns zero if v1 has no value

v2 = v1.GetValueOrDefault(-1); // assigns -1 if v1 has no value

您可以使用HasValue屬性來檢查v1是否有值:

if (v1.HasValue) {
  v2 = v1.Value;
}

還有對GetValueOrDefault(T)方法的語言支持:

v2 = v1 ?? -1;

如果v1為空,則無法執行此操作,但可以使用操作員進行檢查。

v2 = v1 ?? 0;

你可以做

v2 = v1.HasValue ? v1.Value : v2;

到目前為止的其他答案都是正確的; 我只是想添加一個稍微更乾淨的:

v2 = v1 ?? default(int);

任何Nullable<T>都可以隱式轉換為它的T ,提供了被評估的整個表達式永遠不會導致ValueType的空賦值。 那麼,空合併運算符?? 只是三元運算符的語法糖:

v2 = v1 == null ? default(int) : v1;

...這反過來語法糖為一個if / else:

if(v1==null)
   v2 = default(int);
else
   v2 = v1;

此外,從.NET 4.0開始, Nullable<T>具有一個“GetValueOrDefault()”方法,它是一個基本上執行上面顯示的空合併的空安全getter,因此它也可以工作:

v2 = v1.GetValueOrDefault();

Random用於創建隨機數。 (當然是偽隨機)。

例:

Random rnd = new Random();
int month = rnd.Next(1, 13); // creates a number between 1 and 12
int dice = rnd.Next(1, 7);   // creates a number between 1 and 6
int card = rnd.Next(52);     // creates a number between 0 and 51

如果你要創建多個隨機數,你應該保留Random實例並重用它。 如果你創建新實例的時間太近,它們將產生相同的一系列隨機數,因為隨機發生器從系統時鐘中播種。





c# nullable