0
Я пытаюсь получить доступ кC# Словарь - Доступ Значение по Enum ключа в Unity/Kinect проекта
RootSystem.Collections.Generic.Dictionary<Microsoft.Kinect.Face.FaceProperty, Windows.Kinect.DetectionResult> FaceProperties
в единстве с Kinect Plugin.
Таким образом, FaceProperty и DetectionResult являются Перечисления:
public enum FaceProperty : int
{
Happy =0,
Engaged =1,
WearingGlasses =2,
LeftEyeClosed =3,
RightEyeClosed =4,
MouthOpen =5,
MouthMoved =6,
LookingAway =7,
}
и
public enum DetectionResult : int
{
Unknown =0,
No =1,
Maybe =2,
Yes =3,
}
Затем в режиме отладки, я пытался получить доступ к FaceProperties:
FaceProperties // Count = 8
FaceProperties[0] // Incorrect types or number of arguments
FaceProperties[FaceProperty.Happy] // The name 'FaceProperties[global::Microsoft.Kinect.Face.FaceProperty.Happy]'
// does not exist in the current context.
ли вы, есть идеи, как я могу получить доступ к значениям словаря FaceProperties?
Спасибо заранее, bertiooo
Хорошо Guess, но у меня уже есть эта строчка в моем сценарии ... Но он указал мне на другой вопрос: является синтаксисом словаря [Enum.Key] 'не совсем правильным или это просто проблема моего кодирования в единстве? Так сказать, проблема лежит где-то еще, согласно небольшому тесту кодирования, который я написал: [link] (http://rextester.com/BNFCD7626). Я буду исследовать в этом направлении дальше, так что спасибо вам большое. – bertiooo
Я вижу, что ваш тест не срабатывает при второй попытке, словарь не имеет индексации. Просто потому, что элементы не выровнены в памяти, как список или массив. Последняя версия является лучшей, так как позволяет проверять ключ, чтобы избежать исключения. Это также быстрее, чем dict.ContainsKey – Everts
Я попытался прочитать переменную во время выполнения вместо этого в панели часов отладчика, и теперь это работает. Кажется, это проблема монодевелла .. так что thx снова – bertiooo