Skip to content

Instantly share code, notes, and snippets.

@orange-in-space
Created January 19, 2019 14:57
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save orange-in-space/51a5ea3884bc0f001923b0a8a6734772 to your computer and use it in GitHub Desktop.
Save orange-in-space/51a5ea3884bc0f001923b0a8a6734772 to your computer and use it in GitHub Desktop.
ちゃんと型検査される、『「どっちがでかいの?ていうか同じ?」型』><
class HTU
{
public void Test()
{
int a = 10;//IComparable
int b = 42;//IComparable
//こう書くよりも
//if (a == b)
//{
// //同じ
//}
//else if (a < b)
//{
// //右でかい
//}
//else
//{
// //左でかい
//}
//こう書ける方がエレガントじゃん?><
switch (ThreeWayComparison.Compare(a, b))
{
case OrderIs.Equal:
{
//同じ
break;
}
case OrderIs.LessThanRight:
{
//右でかい
break;
}
case OrderIs.GreaterThanRight:
{
//左でかい
break;
}
}
//さらにC# がもし宇宙船演算子導入したら
//switch (a <=> b)
//って書けるね><
}
}
//ここから
public enum OrderIs : int
{
LT = -1,
EQ = 0,
GT = 1,
//
LessThanRight = -1,
Equal = 0,
GreaterThanRight = 1,
}
public static class ThreeWayComparison
{
public static OrderIs Compare<Type>(Type left, Type right)
where Type : IComparable
{
return (OrderIs)left.CompareTo(right);
}
}
//ここまで
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment