translated.Union(fallback)
или (если Человек не реализует IEquatable<Person>
идентификатором)
translated.Union(fallback, PersonComparer.Instance)
, где PersonComparer:
public class PersonComparer : IEqualityComparer<Person>
{
public static readonly PersonComparer Instance = new PersonComparer();
// We don't need any more instances
private PersonComparer() {}
public int GetHashCode(Person p)
{
return p.id;
}
public bool Equals(Person p1, Person p2)
{
if (Object.ReferenceEquals(p1, p2))
{
return true;
}
if (Object.ReferenceEquals(p1, null) ||
Object.ReferenceEquals(p2, null))
{
return false;
}
return p1.id == p2.id;
}
}
Используйте символ Unicode SUPERSCRIPT MINUS (U + 207B)
⁻
.
Например:
7-⁻5 = 13
EDIT : Или с помощью ЗНАК МИНУС (U + 2212)
⁻
для минуса:
7 - ⁻5 = 13
Не уверен, что это символ для того, что вы хотите, но простое решение (которое будет легко понять и реализовать) заключалось бы в заключении отрицательного числа в скобки:
7 - (-5) = 13
При условии, что вы используете юникод, вы можете использовать истинный знак минус, «-» (U + 2212), а не дефис-минус, «-» ( U + 002D). Просто имейте в виду, что он не совместим с ASCII
Вот ваш пример, показывающий их:
7 - −5 = 13
Кроме того, вот несколько забавных вики-статей о всевозможных строках тире-дефис-минус: http://en.wikipedia.org/wiki/Dash#Common_dashes http://en.wikipedia.org/wiki/Minus_sign#Character_codes
Это отличный ресурс по форматным строкам в C #: SteveX Compiled - Format Strings
Вы можете выбрать способ отображения отрицательного числа, используя выражение диапазона для вашей строки формата. Это в формате:
{0:<PositiveFormat>;<NegativeFormat>;<ZeroFormat>}
Например, вот как отобразить отрицательное число в скобках и слово «ноль» вместо 0:
{0:#;(#);Zero}
Используя эту технику, я думаю, вы можете попробовать это с надстрочной версией отрицательного ( (код ASCII U + 207B) в строке отрицательного формата.
{0:#;⁻#;Zero}
HTH, Anderson
Традиционно в математической типографии вы используете короткое тире U + 2013 или минус U + 2212 (но не дефис!) Как для двоичного (вычитание), так и для унарного (отрицание) минус, и они различаются пробелами (пробелы до и после двоичного минуса, нет пробела между унарным минусом и числом, которое оно отрицает).
Но если вы хотите еще больше различать унарный, я бы рекомендовал заменить верхний индекс минус U + 207B ( но оставьте интервал вокруг вычитания минус):
7 - ⁻5 = 13
Вы можете использовать символ Юникода U + 2212 (знак минуса): 7-−5 = 13
В используемом мной шрифте знак минус отображается немного приподнятым относительно тире. Ваши результаты могут отличаться.
Unicode «верхний индекс минус» http://www.fileformat.info/info/unicode/char/207b/index.htm
char c = '\u207b';