Если вы ищете замену для булева с тремя состояниями с помощью int, вы всегда можете получить nullable boolean , не беспокоясь о стандартах. Что-то вроде, в C # bool? triState
. Он может иметь значения true, false или null, которые можно считать неизвестными, но я вижу, что это не то, что вы ищете.
Я не знаю о конвенции. Скорее всего, не из ответов, приведенных здесь. Мне нравится твой третий.
Но с другой точки зрения мой выбор был бы:
{ True, Unknown, False } => 0, 1, 2 // going by enum like values...
РЕДАКТИРОВАТЬ: После хорошей точки @LarsTech, я должен уточнить. Что если я знаю, что для переменной может быть больше двух значений, то я бы подумал, что это перечисление, и, следовательно, я мог бы перевести его в {0, 1, 2}. Я всегда следую шаблону значений enum, например: «Хорошо, хорошо, плохо». Это естественно для меня, но для многих истинных иметь «0» не приветствуется. Можно всегда иметь обратный порядок.